با سلام خدمت اساتید عزیز
چجوری می شه چند فایل php رو همزمان با هم اجرا کرد یا این که چند دستور php رو همزمان اجرا کرد
ممنون از دوستان عزیز
با سلام خدمت اساتید عزیز
چجوری می شه چند فایل php رو همزمان با هم اجرا کرد یا این که چند دستور php رو همزمان اجرا کرد
ممنون از دوستان عزیز
با include کردن فایل های مورد نیاز !
شما توضیح بدین میخواین چیکار کنین چون اجرای چند دستور از توی چند تا فایل یا یک فایل جوابش همینه اما اگه کارتون چیز دیگه هستش باید کامل توضیح بدین.
دوست عزیز include کردن به درد کار من نمی خورد زیرا اون هم همزمان اجرا نمی کرد من می خوام چند فایل دقیقا همزمان اجرا بشه مثلا در یک ثانیه و به طور دقیق در یک زمان به چند نفر ایمیل بفرسته که خب دستورات ایمیل اگر در یک فایل باشن بعد از هم و به ترتیب می فرسته و اگر در چند فایل به صورت جدا باشن میشه مثلا با cron jobs دقیقا همزمان اجراشون کرد اما مشکل cron jobs اینه که اگه بخوام 300 تا صفحه رو برای یک زمان خاص تنظیم کنم پدرم در میاد لطفا کمکم کنید
ممنون
با این کد:
<?php
shell_exec('nohup php script1.php > /dev/null &');
shell_exec('nohup php script2.php > /dev/null &');
shell_exec('nohup php script3.php > /dev/null &');
shell_exec('nohup php script4.php > /dev/null &');
shell_exec('nohup php script5.php > /dev/null &');
?>
نکته: این روش فقط در هاستهای لینوکس جواب میده. درحال بررسی روش مشابه برای هاست ویندوز هستم.
اگه شما واقعا فکر میکنین mail server ایمیل ها را به صورت موازی موازی ارسال میکنه در اشتباه هستین ! ارسال مثلا ۱۰۰ تا ایمیل توی یک فایل php زمان آنچنان زیادی هم نمیبره و کلا اهمیتی نداره که مثلا چند ثانیه فاصله ایجاد بشه !!! میشه دقیقا بگین چی تو فکرتونه ؟ مواردی مثل اسپم شدن هم وجود دارند که ارسال های زیاد و بی پروا باعث میشه !
من فکر میکنم شما توی موضوع تئوری مشکل دارین. بگین اصل قضیه چیه ؟ نگرانی از چیه ؟
اگه هاست روی safe mode باشه shell_exec کار نمیکنه ! و همه هاshell_exec هم به صورت همزمان اجرا نمیشوند و دونه دونه اجرا میشوند و باز هم شما ۱۰۰٪ موازی کار را انجام نمیدید !!
معمولاً برای اینجور کارها از VPS استفاده میشه. بعلاوه وقتی از nohup استفاده میشه و با & آخر دستور، اون رو به Background منتقل میکنیم، دیگه سیستم عامل منتظر تموم شدن دستور قبلی نمیمونه و دستور بعدی بلافاصله اجرا میشه. البته از nohup هم میشه استفاده نکرد و مستقیماً مفسر PHP رو صدا زد ولی nohup برای اینکه تصادفاً Process مربوطه Kill نشه بهتره.
خیلی ممنون از پاسخاتون اما یه مشکل اساسی دارم من از هاست اشتراکی استفاده می کنم و در اون sell_exec غیر فعال است راه حلی واسه این یا راه حل دیگه ای وجود نداره؟
و باز هم ممنون .
نه راه دیگری نیست. باید از VPS استفاده کنید.
با سلام و تشکر خدمت همه دوستان و اساتید عزیز
سوال من ارتباطی با این سوال نداره ولی میپرسم.
من میخوام یه فایل php رو اجرا کنم که همیشه در حال اجرا باشه و هیچ وقت متوقف نشه. من با دستور زیر این کارو انجام دادم ولی مشکلم اینکه هر شب بین ساعت 1 تا 2 این فایل خود به خود متوقف میشه و کار نمیکنه قبل ساعت 1 توی لیست proccess هست ولی بعد از اون kill میشه و دیگه کار نمیکنه. من میخوام که این اتفاق نیوفته و این فایل همیشه در حال اجرا باشه ممنون میشم یه کمکی بکنید.
exec("nohup php {$pg['PATH']} >/dev/null 2> /dev/null & echo $!")
این کد رو تست کنید:
shell_exec("nohup php {$pg['PATH']} > /dev/null &");
و توی فایل PHP که مسیرش توی متغیر ['pg['PATH$ ذخیره شده، این کدها رو بگذارین:
set_time_limit(0);
ignore_user_abort(true);
به این نیاز دارم چون شناسه اش رو PID رو میخوام
echo $!
ولی
exec("nohup php {$pg['PATH']} >/dev/null & echo $!")
رو امتحان کردم.
توی اون فایل هم دو دستوری که گفتید را قبلا نوشته بودم
پس با این اوصاف، باید با پشتیبانی هاستتون تماس بگیرین چون احتمالاً Server یکبار توی اون ساعت Restart میشه. یا اینکه اگه پشتیبانی جواب نداد، با Cron اسکریپت رو طوری تنظیم کنید که دوباره مثلاً ساعت 01:01 اجرا بشه. به یه نحوی هم کاری که تا حالا انجام داده رو ذخیره کنید که در فراخوانی مجدد، ادامه کار رو انجام بده.
من در مورد Cron چیزی نمیدونم. اگه یه توضیح کوتاه بدید و بگید چی هست و یه منبع هم معرفی کنید خیلی ممنون میشم.
ممنون پیدا کردم.