آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آپدیت خودکار کد php و دیتابیس mysql

SaeiD-as  7 سال پیش  7 سال پیش
+1 0

سلام دوستان

وقتتون بخیر

من داخل دیتابیسم یه ردیف بنام user_time دارم و می خوام زمانی که کاربر مثلا زمان 7 رو وارد کرد (به معنای 7 روز یا یک هفته) این ردیف از دیتابیس بصورت خودکار هر روز کمتر بشه تا به صفر برسه و می خوام که این کار بصورت خودکار توسط کد php انجام بشه و داخل برنامه نشون داده بشه، ممنون می شم راهنمایی کنید به چه صورتی این کار ممکنه

+1 0
برای این کار باید شما زمان ثبت این عدد رو هم به صورت timestamp ذخیره کنید و هر دفعه که نیازه ببینید چند روز از اون زمان گذشته. (7 سال پیش)
0 0
این هم روشیه ولی من بیشتر از اون می خوام که خود php من آپدیت بشه و از اون طریق بتونم دیتابیسم رو مدیریت کنم، به عنوان مثال اگه به این روش که شما گفتید برم در آینده حجم زیادی دیتا دارم که زمانشون تموم شده و من هنوز داخل دیتابیسم اون داده رو دارم و داخل اندروید فقط گفته ام که اگه از زمانش گذشته نشونش نده! و اصولی و منطقی نیست این کار و سرعت پردازش کارم هم خیلی در دراز مدت پایین میاد (7 سال پیش)
+1 0
سلام ، میتونی هر وقت خواستی کوئری بگیری ، از تمام ردیف ها ( وقایع ) ، ستون های تعداد روزی که کاربر وارد کرده و زمان ثبت عدد رو بگیری . حالا با cursor بررسی کن ببین اگه اختلاف این زمان با زمان فعلی سیستم کمتر از تعداد روز متناظر بود ، این اختلاف رو در آرایه مثلا inTime بریز ، ولی اگه اختلاف بیشتر بود id شو در آرایه outTime بریز . حالا به ازای تمام id های آرایه outTime ، ردیف متناظر رو در دیتابیس حذف کن و بعد آرایه inTime رو بفرست سمت اندروید که شامل همون زمان باقی مانده سطرها بر حسب روزه . (7 سال پیش)
+1 0
روشی که رضا گفت هم خوبه اگه نمیخوای این بررسی ها رو دستی انجام بدی میتونی کرون جاب بنویسی که روزی یک بار خودکار عملیات انجام بشه ولی بعید میدونم هیچ کدوم از این روش ها درست باشه و راه بهتری هست فکر کنم اگه تو انجمن وب سرور این سوالو بپرسی زودتر به نتیجه برسی (7 سال پیش)
+1 0
خب شما میتونی رکوردهایی رو که دیگه نیاز نداری رو پاک کنی(با کرون جاب).بازم من نمیدونم برنامه شما چیه و چه چیزایی مورد نیازشه ولی این روشی که من گفتم اکثرا مورد استفاده قرار میگیره دیتا بیس هم اینقدر سرعتش بالاست که با چند میلیون داده هم سرعتش پایین نمیاد (7 سال پیش)
0 0
سپاس از پاسخ هاتون، منم با یه سرچی که زدم به کرون جاب و events رسیدم که نحوه پیاده سازیشون رو نمیدونستم، توضیحاتشون رو مطالعه کردم ولی برای من گنگ بودن!! می تونید یه نمونه کد بهم بدید که چطوری پیاده سازیش کنم؟ با php هم میشه این کار رو کرد؟ (7 سال پیش)
+1 0
کرون جاب کلا اینه که شما یه دستور رو به سیستم عامل میدین که در زمان هایی مشخص اون دستور رو اجرا کنه(مثلا روزی یک بار یا هر پنج دقیقه) خب با توجه به اینکه برنامه های پی اچ پی هم امکان اجرا از طریق خط فرمان رو دارن شما میتونین یک فایل پی اچ پی رو در زمان های مشخص اجرا کنین و تو اون فایل با برنامه نویسی معمولی پی اچ پی کارهای لازم رو انجام بدین . این لینک طریقه تنظیم کرون جاب رو تو سی پنل یاد میده لینک (7 سال پیش)
0 0
شما زمان نهایی و زمان شروع را ذخیره کن و از مقایسه این دو تا ببین زمان به اتمام رسیده یا نه زمان هایی هم که به اتمام رسیده حذف کن (7 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
SaeiD-as  7 سال پیش
0 0

دوستان من کرون جاب رو روی سرورم انجام دادم و یک فایل بنام update_time.php بر روی سرور قرار دادم که محتویان اون اینه:

 <?php
function connectToDatabase(){
    $connection = mysqli_connect("localhost","******","******","******");
    mysqli_set_charset($connection, 'utf8');
    if(mysqli_connect_errno()){
        echo "Fail to connect MYSQL" . mysqli_connect_error();
    }
    return $connection;
}

$connection = connectToDatabase();

mysqli_query($connection, "UPDATE adv SET adv_time=adv_time-1 where adv_time != 0");
    
mysqli_close($connection);
?>

می خوام هر روز ساعت 4 صبح این فایل یکبار اجرا بشه، پس داخل تنظیمات پنل دایرکت ادمینم این تنظیمات رو انجام دادم:

مشکلی که دارم این فایل ساعت چهار اجرا نشد و بعد از چند ساعت که بررسیش کردم adv_time که بر روی 30 تنظیم شده بود به صفر تبدیل شده بود! در صورتی که باید اگر یکبار اجرا میشد فقط از 30 به 29 تبدیل میشد... و گویا چندین بار انجام شده بود!

کد php که نوشتم رو یکبار دستی اجرا کردم و مشکلی نداشت و تمامی اعداد 30 رو به 29 تبدیل کرد.

مشکل کارم بنظرتون کجاست؟

0 0
دوستان اهل فن لطفا راهنمایی کنید، هر کاری انجام دادم درست نشد!! (7 سال پیش)
+2 0
minute رو هم شما گذاشتین هی دقیقه یهنی ساعت چهار تا پسج شصت بار این فایل اجرا میشه باید 0 کنین تا فقط یک باز اجرا بشه (7 سال پیش)
0 0
سپاس از راهنماییتون، چک میکنم، اینکه ساعت چهار دستور اجرا نشد دلیلش چیه بنظرتون؟ من یجا خوندم اگه می خواین ساعت 8 اجرا بشه باید تنظیمش کنید روی 10، اینم باید بزارمش روی 6 تا ساعت 4 اجرا بشه؟ (7 سال پیش)
+1 0
دلیلش اینه که ساعت کرون جاب با ساعت هاستتون اجرا میشه و هاستتون باید ببینین ساعتش چقدر با ساعت شما اختلاف داره. ولی بهترین کار اینکه شما کرون جابتون رو بزارین هر دقیقه اجرا بشه و تو فایل پی اچ پی تون تایم رو رو تایم ایران تنظیم کنین بعد شرط بزارین که اگه ساعت 4 بود اجرا بشه اگه نبود اجرا نشه.و در آخر بهترین بهترین کار اینه که از فریم ورک هایی استفاده کنین که خودشون این کارارو قبلا بهینه کردن مثل لاراول (7 سال پیش)
0 0
اجرای هر دقیقه بار رو سرور ایجاد خواهد کرد نیازی به اجرای هر دقیقه نیست کافیه زمان سرور را به دست بیاره و با محاسبه زمان اون تایمی که میخواد اجراش کنه (7 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .