جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز

زمانبندی برای آپدیت یک رکورد در php

با سلام
من میخوام در php برای یک دوره زمانی که مشخص میکنم رکوردی رو در sql تغییر بدم مثلا دوتا input datetime قرار بدم یکی برای آغاز زمانبندی و یکی برای پایانش و بین این دو تاریخ مقدار یک فیلد رو در دیتابیس تغییر بدم
برای این کار در اینترنت راه هایی دیدم از جمله خود sql که بعد از یک روز فیلد yes رو 0 میکنه

$sql = "UPDATE notification SET yes = 1 WHERE yes = 0 and time >= now() - INTERVAL 1 DAY"

یا متد ()DATE_ADD که بازم مال sql هست.

یا با استفاده از متد های php مثل

$date=date_create("2020-05-01");
date_modify($date,"+1 day");

یا متد Scheduling که طبق بازه ای که بهش میدیم کاری رو برامون انجام میده

schedule_interval(60,'page.php');//every 60s

4 تا راه دیدم ولی حالا بین این ها نمیفهمم کدوم بهتره برای کاری که دارم
یعنی نمیدونم با کدومشون میشه بازه بین دوتا تاریخ رو ثبت کرد برای تغییراتی که میخوام انجام بدم
اگه راه بهتری میدونید یا هر کدوم از این ها که بدردم بخوره ممنون میشم بگین و توضیح بدین چجوری کدشو بنویسم.


ثبت پرسش جدید
احسان قربانی
تخصص : PHP ، در حال یادگیری لاراول ،...
@TimeRunner2359 4 سال پیش مطرح شد
0

@rasool
سلام و وقت بخیر
فکر کنم یکم گنگ توضیح دادید . الان شما راه‌حل رو دارید و نمی‌دانید کدوم یکی بهتره ؟
اگر منظورتون این هست ، احتمال می‌دم که با SQL نوشتن ، کار رو ساده و تمیز تر نگه می‌داره .


woz
تخصص : fan of open source world
@wozniak 4 سال پیش مطرح شد
0

@rasool
برای یک دوره زمانی یعنی چی؟
این توابع که نوشتید کار زمانبندی انجام نمیده


محمدرسول ضیاءالدینی
تخصص : full stack developer
@rasool 4 سال پیش مطرح شد
0

@wozniak
@TimeRunner2359
ببینید یک سایت دارم که فقط میخام چند روز در ماه باز باشه تا افراد بتونند محتوای بعضی از بخش هاشو ببینند و در بقیه روز ها این امکان نباشه
و در دیتا بیس یک فیلد به اسم visibility درست کردم که با اون نمایش و عدم نمایش محتواهارو کنترل میکنم
و از طرفی میخام زمان بندی بهش بدم اینجوری که دوتا input datetime قرار بدم یکی برای آغاز زمانبندی و یکی برای پایانش و مابین این تاریخ ها به صورت خودکار فیلد visibility بشه 1 که محتواها نشون داده بشند و خارج از این بازه زمانی visibility بشه 0 که محتواها نشون داده نشند.
حالا نمیدونستم چجوری این کار رو انجام بدم و توی اینترنت این راه هارو دیدم ولی نمیدونم با این راه حل ها میشه یا نه!
اگه با این کد ها میشه لطفا توی کد نویسیش کمکم کنید اگرم راه دیگه ای هست لطفا راهنمایی کنید ممنون


woz
تخصص : fan of open source world
@wozniak 4 سال پیش آپدیت شد
2

@rasool
کافیه یه کرانجاب ست کنید، که هر 1 ساعت یکبار ( یا یه دقیقه یکبار چک کنه ) یه اسکریپت رو اجرا کنه، کرانجاب مثلا برای یک دقیقه تکرار شدن در هاست اشتراکی ( نحوه ست کردن کرانجاب رو سرچ کنید داخل گوگل) به این شیوه قابل تنظیم هست :

* * * * * /usr/local/bin/php your_script schedule:run >> /dev/null 2>&1

و حالا شما هربار داخل این اسکریپت کافیه چک کنید که آیا از اون زمان اولیه گذشته و به زمان دوم نرسیده باشه مقدار visibility رو به 1 ست میکنید و در بقیه این موارد به 0. و کد شما هر یک دقیقه یا یک ساعت یکبار چک میشه. پس مشکلی ندارید .
اگرتو نوشتن اسکریپت هم مشکل داشتید بفرمایید که با هم حل کنیم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام