محمد امیری
4 سال پیش توسط محمد امیری مطرح شد
6 پاسخ

schedule:run در هاست اشتراکی

سلام.
آقا من queue:work رو تو کرانجاب گذاشتم و زمان اجراشو روی هر دقیقه گذاشتم سایت down شد بعد با schedule:run اجراش میکنم و withoutOverLaping میزنم با همون اجرای هر دقیقه میگه دستوری برای اجرا وجود نداره.


ثبت پرسش جدید
woz
تخصص : fan of open source world
@wozniak 4 سال پیش آپدیت شد
0

@mohammadeng3731
یه روش که میشه انجام داد اینه که :داخل app/console/kernel.php و داخل متد schedule کارهایی که میخوای برای مدت یک دقیقه schedule بشن رو خط به خط برای اجرا بزاری.
بعد کرانجاب رو به صورت زیر ست کنید :

* * * * * address_to_php address_to_artisan schedule:run >> /dev/null 2>&1

که addresstophp ادرس فایل اجرایی php روی هاست( مثلا usr/local/bin/php/ ) و addresstoartisan مسیر ابسلوت فایل artisan.php شما هست ( مثلا home/websiteuser/domains/example.com/artisan/ )
به این صورت کار خواهد کرد.
فقط عیبی که هست اینه که هر یک دقیقه یکبار کار میکنه. ( زمان به صورت پیوسته نیست . وبرای موارد حساس برای زمان کمتر از 1 دقیقه شاید جالب نشه نتیجه ). اما دیگه هاست اشتراکیه چه میشه کرد


محمد امیری
تخصص : backend coder
@mohammadeng3731 4 سال پیش مطرح شد
0

@behzadd اصلا لاراول خداییش برای هاست اشتراکی نیست. اون proc_open رو قفل کردن یه روز گشتم تا حلش کردم اینم که اصلا کرانجابش زمانبندیش با schedule در حالیکه هردوتارو اجرای هر دقیقه گذاشتم چون یکم اختلاف بینشون ناخواسته ایجاد میشه کلا کار نمیکنه. هر چقدر پول بدی آش میخوره اینجام صدق میکنه لامصصب.


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

@mohammadeng3731
با این روش و کمی نکته بینی ریز داخل کدها میشه اینو که عرض کردم راه اندازی کرد. غیر از اینم روش دیگری ظاهرا برای هاست اشتراکی نیستش.


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
0

@mohammadeng3731
آره واقعا خیلی چیزها شهید میشن اگر از هاست اشتراکی استفاده کنیم و جز در شرایط خیلی خاص و ساده، به نظرم صد در صد یک VPS ولو خیلی ساده ارجحیت داره و میارزه نسبت به یک هاست اشتراکی حتی خیلی قوی.

در خصوص مشکل proc_open هم ممنون میشم راهکار نهاییتون رو به اشتراک بذارید. من هم درگیرم هنوز باهاش روی یک هاست اشتراکی.


محمد امیری
تخصص : backend coder
@mohammadeng3731 4 سال پیش مطرح شد
1

@mhyeganeh
سلام
والا من اومدم یک کامندی رو با کرانجاب اجرا کنم متاسفانه ازم خطای غیر فعال بودن proc_open گرفت که پیشفرض درون هاست های اشتراکی غیر فعاله حق هم دارن چون باهاش میشه کامندهای پیشرفته ی لینوکس نوشت به اطلاعات افراد دیگه ای که دارن از اون سرور به صورت اشتراکی استفاده میکنن دسترسی پیدا کرد و کاملا تابعش امنیتی هستش.لاراول هم برای ایجاد کامندهاش ازش درون آدرس زیر استفاده کرده :

vendor\symfony\console\terminal.php 

که شما باید زحمت بکشی تو اخرین تابع این فایل که proc_open کاملا مشهود هستش کل محتویات اون رو پاک کنید و فقط و فقط null برگردونید وگرنه خطا میده.
یه مشکل دیگه هم وجود داره و اون اینکه در ورژن جدید نمایش خطای لاراول یعنی ignition از این تابع منحوس استفاده شده که شما باید دستور زیر رو بزنید:

php artisan vendor:publish --tag=flare-config

بعد وارد کانفیگ ها که بشید فایل flare مشهوده داخلش collect_git_information رو false قرار بدید.
دلیل اینکه اغلب به این خطا میخورن اینه که یک خطایی دارین و اون خطا توسط ignition باید نمایش داده بشه اما خود ignition داره از این proc_open استفاده میکنه خودش به خطا میخوره بعد نه لاراول میفهمه چیشد نه شما میفهمید چیشده نه هاست و....
امیدوارم به دردتون بخوره


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
0

@mohammadeng3731
دم شما گرم. عالی بود.


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

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