View Full Version : سوال: نیاز به کد تایمر جهت نمایش آپتایم .
mahdiak
یک شنبه 01 دی 1392, 10:59 صبح
سلام
اساتید عزیز یک سوال مبتدی دارم .
من برای یکی از سایتهام نیاز دارم تا یک تایمر در صفحه php خودم استفاده کنم
که آپتایم سایت رو نمایش بدم
بطور مثال .
پایداری این سرور :
3 روز و 20 ساعت و 45 دقیقه و 52 ثانیه میباشد .
میخوام از از کدی استفاده کنم که این ثانیه ؛ دقیقه ؛ ساعت و روز خودکار شمارش بشه و زیاد بشه که البته این فرایند با رفرش صفحه دوباره 0 نشه ....
ممنون میشم راهنمایی فرمایید .
Javidhb
یک شنبه 01 دی 1392, 18:26 عصر
کار شما دوتا مرحله داره:
1. محاسبه uptime
2. نمایش uptime
1. شما باید از طریق cronjob یه تابع php رو مثلا هر 5 دقیقه یه بار اجرا کنید، و در صورت موفقیت آمیز بودن تابع توی دیتابیس یا فایل یه مقداری رو اضافه و ذخیره کنید. (اگه راجع به این قسمت مشکلی دارید توی انجمن php بپرسید)
2. قسمت نمایش uptime که مروبط به javascript میشه هم کار خاصی نداره:
اول باید موقع لود شدن صفحه مقدار uptime که توی دیتابیس یا فایل ذخیره شده رو با php بگیرید و توی html نشون بدید.
بعد از اون هم کافیه با تابع ()setInterval توی جاوااسکریپت هر ثانیه به مقدار اولیه ای که از php گرفتید یه ثانیه اضافه و مقدار رو توی صفحه آبدیت کنید.
html:
<p dir="rtl">پایداری این سرور :</p>
<p dir="rtl"> <span id="utD">3</span> روز و <span id="utH">20</span> ساعت و <span id="utMin">58</span> دقیقه و <span id="utSec">58</span> ثانیه میباشد</p>
js:
var sec = document.getElementById("utSec");
var min = document.getElementById("utMin");
var hour = document.getElementById("utH");
var day = document.getElementById("utD");
//اجرای تابع هر 1 ثاینه
setInterval(function(){
calSec();
},1000); // = 1 ثانیه
//پردازش ثانیه
function calSec(){
var curSec = parseInt(sec.innerHTML); //مقدار فعلی ثانیه
if(curSec > 58){ //برای صفر کردن ثانیه اگه 60 ثانیه شد
curSec = 0;
calMin(); //پردازش دقیقه
}else{
curSec = curSec + 1; //در حالت معمولی یک ثانیه
}
if(curSec < 10){
curSec = '0'+curSec; //برای گذاشتن یه صفر قبل از عدد اگه کوچیکتر از 10 بود
}
sec.innerHTML = curSec; //آپدیت ثانیه در صفحه
}
//پرداش دقیقه
// بهتره این تابع رو هم مثل تابع قبلی ویرایش و تغییر بدید
function calMin(){
var curMin = parseInt(min.innerHTML);
if(curMin > 58){
min.innerHTML = 0;
calHour();
}else{
min.innerHTML = curMin + 1;
}
}
//پردازش ساعت
function calHour(){
var curH = parseInt(hour.innerHTML);
if(curH > 58){
hour.innerHTML = 0;
calDay();
}else{
hour.innerHTML = curH + 1;
}
}
//پردازش روز
function calDay(){
//اینم راحته، خودتون بنویسید
}
دمــو (http://jsfiddle.net/kB7dV/)
mahdiak
یک شنبه 01 دی 1392, 20:01 عصر
بسیار عالی و ممنون .
حالا استاد اگر بخوایم از حالت آپتایم خارج بشیم ... و بطور مثال زمان راه اندازی سایت رو به همین روش چند روزو ساعتو .... اعلام کنیم ... چه کدی میتونه کمکمون کنه ؟
بطور مثال همین تایم ها هر ثانیه در فایل متنی ذخیره بشه که هر کاربر صفحه رو باز کرد بدونه این سایت چند روزو .... افتتاح شده ...
Javidhb
دوشنبه 02 دی 1392, 11:54 صبح
کافیه تاریخ شروع کار سایت رو توی یه فایل txt یا حتی یه متغیر توی فایل PHP تعریف کنید (چون دیگه تغییر نمیکنه... بهتره بصورت متغیر توی خود php دخیره کنید)
بقیش هم ساده اس:
<?php
//توی مرحله اول باید تاریخ رو از فایل بخونید
//...
//http://www.php.net/manual/en/function.strtotime.php
//unix timestamp تبدیل تاریخ به
$startDate = strtotime('2012-02-12 12:40:14'); //فرض میکنیم این تاریخ شروع سرور هست
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<p dir="rtl"> <span id="utD"></span> روز و <span id="utH"></span> ساعت و <span id="utMin"></span> دقیقه و <span id="utSec"></span> ثانیه </p>
<script>
var sec = document.getElementById("utSec");
var min = document.getElementById("utMin");
var hour = document.getElementById("utH");
var day = document.getElementById("utD");
/* کدهای جدید */
var miliSaniye = <?php echo $startDate ?> * 1000; //محاسبه میلی ثانیه
var startDate = new Date(miliSaniye); //ساخن تاریخ برای زمان شروع کار سرور
var nowDate = new Date(); //ساختن یه تاریخ جدید برای زمان حال
//محاسبه زمان سپری شده بین دو تا تاریخ - برحسب میلی ثانیه
var passedTime = nowDate.getTime() - startDate.getTime();
//این قسمت رو میشه با ریاضی هم بدست آورد
//ولی اینجوری بی دردسر تره
var passedTime = new Date( passedTime ); //بعدا سات، دقیقه و ثانیه رو از این استخراج میکنیم
var days = Math.floor(passedTime / 1000 / 60 / (60 * 24)); //محاسبه روزهای سپری شده
sec.innerHTML = passedTime.getSeconds();
min.innerHTML = passedTime.getMinutes();
hour.innerHTML = passedTime.getHours();
day.innerHTML = days;
//اجرای تابع هر 1 ثاینه
setInterval(function(){
calSec();
},1000); // = 1 ثانیه
//پردازش ثانیه
function calSec(){
var curSec = parseInt(sec.innerHTML); //مقدار فعلی ثانیه
if(curSec > 58){ //برای صفر کردن ثانیه اگه 60 ثانیه شد
curSec = 0;
calMin(); //پردازش دقیقه
}else{
curSec = curSec + 1; //در حالت معمولی یک ثانیه
}
if(curSec < 10){
curSec = '0'+curSec; //برای گذاشتن یه صفر قبل از عدد اگه کوچیکتر از 10 بود
}
sec.innerHTML = curSec; //آپدیت ثانیه در صفحه
}
//پرداش دقیقه
// بهتره این تابع رو هم مثل تابع قبلی ویرایش و تغییر بدید
function calMin(){
var curMin = parseInt(min.innerHTML);
if(curMin > 58){
min.innerHTML = 0;
calHour();
}else{
min.innerHTML = curMin + 1;
}
}
//پردازش ساعت
function calHour(){
var curH = parseInt(hour.innerHTML);
if(curH > 11){
hour.innerHTML = 0;
calDay();
}else{
hour.innerHTML = curH + 1;
}
}
//پردازش روز
function calDay(){
//اینم راحته، خودتون بنویسید
}
</script>
</body>
</html>
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.