درود بر شما مستقیما با کد php نمیشه چنین کاری انجام داد.
باید از مثلا supervisor استفاده کنید و بهش بگید فلان فایلتون که کد php هست رو هر ۳ ثانیه اجرا کن
میتونید یه فایل php بسازید و تایم اجراشو بی نهایت بزارید. توی اون فایل مشخص کنید که فایل مورد نظر شما رو هر 3 ثانیه اجرا کنه. (دقیقا کاری که صف های لاراول انجام میدن)
میتونید از فریمورک هایی مثل simps استفاده کنید.
یا از توزیعی از php که pthread رو پشتیبانی می کنه استفاده کنید، وبعد یک ترد ایجاد کنید و داخل اون از حلقه و اسلیپ استفاده کنید و تایمر رو پیاده سازی کنید.
*این کار ها روی هاست اشتراکی قابل انجام نیستن
😁 اگر قراره اتفاقی بیوفته که بر کاربر تاثیرشو نشون میده میتونید از Js و Ajax استفاده کنید مثل سایت های صرافی 😅
@amirmahdavinejad
سلام و وقت بخیر.
یکی توی quora نوشته بود اولین سوال اینه که چرا اصلا میخواید یه چنین کاری رو انجام بدید؟ :) و درست گفته چون php اصلا برای این کار ساخته نشده و این راه حل که در ادامه میاد ، فقط برای حالت CLI باید استفاده بشه نه داخل سایت:
ignore_user_abort(true);//Run in persistent mode
set_time_limit(0);//Run infinitely
while (true)
{
//==do your rest of works here.
echo "Current timestamp is: ".time().PHP_EOL;
flush();//buffer output
sleep( 10 );//for wait 10 seconds
}
موفق و سلامت باشید
یا حق
اگه تمایلی ندارید از supervisor و سرویسهای مشابه استفاده کنید میتونید به شکلهای مختلف از crontab خود سرور استفاده کنید(روی اوبونتو سرور به طور پیشفرش وجود داره).
حالا برای این کار باید چنتا عامل رو در نظر بگیرید. در مرحلهی اول لازمه ببینید روی سروری که دارید این تسک در چه زمانی انجام میشه، زمان انجام شدن این تست روی سرور بسته به سخت افزاری که در اختیارتون قرار گرفته به طور قطع با لوکال متفاوت خواهد بود و شاید حتی ببینید انجام شدن این تست خیلی بیشتر از اون چیزی که انتظار داشتید طول میکشه!
وقتی که زمان انجام شدن رو پیدا کردید، حالا باید یه حاشیهی امن هم بهش اضافه کنید که اگه یه زمانی لود سرور رفت بالا و این زمان بییشتر شد ایجاد تداخل نکنه.
حالا میتونید با دو روش پیاده سازی کنید:
1- همون طوری که اقای قربانی فرمودن و با یه حلقهی بی نهایت، با یه فرمان اسکریپت رو دائمی اجرا کنید. این روش مناسب بعضی کاربرداست.
2-sleep time رو توی خود crontab تعریف کنید. اینجوری سیستم درگیر یک حلقهی بینهایت نمیشه و فشار کمتری روش میاد که برای بعضی کاربردای دیگه مناسبه.
یعنی به این شکل مثلا:
* * * * * sleep 3; your command
* * * * * sleep 6; your command
و همین طور ادامه دار
همون طور که میبینید این روش دوم برای زمانهای خیلی کوتاه چندان مناسب نیست چون باید تعداد زیادی کران تعریف کنید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟