بهرام
5 سال پیش توسط بهرام مطرح شد
5 پاسخ

خطا موقع اجرای cronjob در هاست اشتراکی

من یه سایتی با لاراول ۵.۸ نوشتم و وقتی توی سیستم خودم اجراش می‌کنم به درستی کار می‌کنه ولی روی هاست اشتراکی چون نسخه پی‌اچ‌پی پایین بود در سی‌پنل از قسمت multiphp نسخه پی‌اچ‌پی رو به ۷.۳ تغییر دادم و یه cronjob به صورت زیر نوشتم:

/usr/local/bin/ea-php73 /home/username/artisan schedule:run 1>> /dev/null 2>&1

در فایل kernel.php هم کد زیر رو دارم:

protected function schedule(Schedule $schedule)
{
    $schedule->command('queue:work')->everyMinute();
}

و خطایی که بهم میده اینه:

The Process class relies on proc_open, which is not available on your PHP installation

اینم بگم که proc_open رو به دلایل امنیتی، پشتیبانی هاست گفت نمی‌شه فعال کرد.
به نظرتون چیکار کنم؟؟؟


ثبت پرسش جدید
Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام
@bahram

روی ورژن 7.1 تست بگیرید کرونتون رو!

( اگر توی هاستتون قسمت select php version ) دارید از اونجا باید تغییر ورژن بزنید !

اما در کل
بله این تابع توی اکثرا سرور ها بسته هست
proc_open
یه راه کار بخوام بدم
شما کاری که میخوایید انجام بدید رو
توی یه مسیر مشخص و یه روت مشخص براش اوکی کنید
جدا از آرتیسان
اگر کنترل پنلتون سی پنل هست ، که حتما هست چون Multi php داشتید!!!
اون مسیر رو از طریق کرون جاب خود هاستتون اجرا کنید
تایم هم بهش میتونید بدید که هر 2 دقیقه به فرض اجرا شه!
اینطوری از آرتیسان جدا میشه!


بهرام
تخصص : Laravel Developer
@bahram 5 سال پیش مطرح شد
0

سلام
@Alimotreb
ممنون بابت پاسختون...
روی تمام ورژن‌های پی‌اچ‌پی تست کرده بودم ولی نشد.
متاسفانه هاستم قسمت select php version رو نداره و فقط از multiphp میشه نسخه پی‌اچ‌پی رو تغییر داد
من یه کرون نوشتم که ایمیل‌هایی که توی صف هستن رو اجرا کنه که دستورش رو به صورت php artisan queue:work هستش، بدون آرتیسان نمی‌دونم چطوری باید اینو نوشت؟؟؟


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام
@bahram

اینکه میگید هاستتون multi php داره فقط ، یعنی کلود لینوکس نیست سیستم عاملش!
که به نظرم بسیار ضعف هست!
آرتیسان رو در وب هم میشه استفاده قرار داد

https://stackoverflow.com/questions/49158851/laravel-programatically-calling-artisan-command-from-web-php-in-production
این مطلب رو ببینید
با این هم تست بگیرید
ولی اون تابع بعید میدونم تو خود لاراول کارایی داشته باشه
اون تابع در 99 درصد جاها بسته هست و در 90 درصد فریم ورکا و اسکریپت ها هم استفاده نمیشه!

ولی بازم تست بگیرید انشالا مشکلتون حل شه


بهرام
تخصص : Laravel Developer
@bahram 5 سال پیش مطرح شد
0

@Alimotreb
بازم تشکر
آره هاست ضعیفی هستش...
به اون صورت هم که گفتید هم امتحان کرده بودم ولی نمی‌شه
به نظر خودمم خطاش به خاطر نسخه پی‌اچ‌پی باید باشه نه اون تابع... چون کرون‌جاب رو اجرا می‌کنه ولی وقتی میخواد schedule که داخل خود لاراول نوشتم رو اجرا کنه خطا میده که فک کنم اونجا از یه نسخه دیگه استفاده می‌کنه واسه اجرای php artisan queue:work... خود اینم به صورت یه کرون نوشتم تا اجرا بشه ولی نمیشه....


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام
@bahram

خواهش میکنم
منم همینطور فکر میکنم
به نظرم مشکل از ورژن PHP هست
بهترین ورژن 7.1 هست از نظر من و کامل ترین ورژن!
اون تابع توی همه هاستینگ ها بسته هست

یه هاست دیگه بگیرید تست کنید
یا میخوایید یه سرور مجازی بگیردی تست کنید پروژه رو
تو زمینه کانفیگ و این موارد کمکی خواستید در خدمتم


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

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