PDA

View Full Version : سوال: اجرای همزمان چند فایل php



loderi
پنج شنبه 22 فروردین 1392, 13:04 عصر
با سلام خدمت اساتید عزیز
چجوری می شه چند فایل php رو همزمان با هم اجرا کرد یا این که چند دستور php رو همزمان اجرا کرد
ممنون از دوستان عزیز

Unique
پنج شنبه 22 فروردین 1392, 16:38 عصر
با include کردن فایل های مورد نیاز !
شما توضیح بدین میخواین چیکار کنین چون اجرای چند دستور از توی چند تا فایل یا یک فایل جوابش همینه اما اگه کارتون چیز دیگه هستش باید کامل توضیح بدین.

loderi
پنج شنبه 22 فروردین 1392, 17:30 عصر
دوست عزیز include کردن به درد کار من نمی خورد زیرا اون هم همزمان اجرا نمی کرد من می خوام چند فایل دقیقا همزمان اجرا بشه مثلا در یک ثانیه و به طور دقیق در یک زمان به چند نفر ایمیل بفرسته که خب دستورات ایمیل اگر در یک فایل باشن بعد از هم و به ترتیب می فرسته و اگر در چند فایل به صورت جدا باشن میشه مثلا با cron jobs دقیقا همزمان اجراشون کرد اما مشکل cron jobs اینه که اگه بخوام 300 تا صفحه رو برای یک زمان خاص تنظیم کنم پدرم در میاد لطفا کمکم کنید
ممنون

MMSHFE
جمعه 23 فروردین 1392, 01:53 صبح
با این کد:


<?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 &');
?>

نکته: این روش فقط در هاستهای لینوکس جواب میده. درحال بررسی روش مشابه برای هاست ویندوز هستم.

Unique
جمعه 23 فروردین 1392, 02:07 صبح
اگه شما واقعا فکر میکنین mail server ایمیل ها را به صورت موازی موازی ارسال میکنه در اشتباه هستین ! ارسال مثلا ۱۰۰ تا ایمیل توی یک فایل php زمان آنچنان زیادی هم نمیبره و کلا اهمیتی نداره که مثلا چند ثانیه فاصله ایجاد بشه !!! میشه دقیقا بگین چی تو فکرتونه ؟ مواردی مثل اسپم شدن هم وجود دارند که ارسال های زیاد و بی پروا باعث میشه !

من فکر میکنم شما توی موضوع تئوری مشکل دارین. بگین اصل قضیه چیه ؟ نگرانی از چیه ؟

Unique
جمعه 23 فروردین 1392, 02:16 صبح
اگه هاست روی safe mode باشه shell_exec کار نمیکنه ! و همه هاshell_exec هم به صورت همزمان اجرا نمیشوند و دونه دونه اجرا میشوند و باز هم شما ۱۰۰٪ موازی کار را انجام نمیدید !!

MMSHFE
جمعه 23 فروردین 1392, 02:22 صبح
معمولاً برای اینجور کارها از VPS استفاده میشه. بعلاوه وقتی از nohup استفاده میشه و با & آخر دستور، اون رو به Background منتقل میکنیم، دیگه سیستم عامل منتظر تموم شدن دستور قبلی نمیمونه و دستور بعدی بلافاصله اجرا میشه. البته از nohup هم میشه استفاده نکرد و مستقیماً مفسر PHP رو صدا زد ولی nohup برای اینکه تصادفاً Process مربوطه Kill نشه بهتره.

loderi
جمعه 23 فروردین 1392, 12:20 عصر
خیلی ممنون از پاسخاتون اما یه مشکل اساسی دارم من از هاست اشتراکی استفاده می کنم و در اون sell_exec غیر فعال است راه حلی واسه این یا راه حل دیگه ای وجود نداره؟
و باز هم ممنون .

MMSHFE
جمعه 23 فروردین 1392, 17:54 عصر
نه راه دیگری نیست. باید از VPS استفاده کنید.

kashkol2
سه شنبه 27 فروردین 1392, 10:34 صبح
با سلام و تشکر خدمت همه دوستان و اساتید عزیز
سوال من ارتباطی با این سوال نداره ولی میپرسم.
من میخوام یه فایل php رو اجرا کنم که همیشه در حال اجرا باشه و هیچ وقت متوقف نشه. من با دستور زیر این کارو انجام دادم ولی مشکلم اینکه هر شب بین ساعت 1 تا 2 این فایل خود به خود متوقف میشه و کار نمیکنه قبل ساعت 1 توی لیست proccess هست ولی بعد از اون kill میشه و دیگه کار نمیکنه. من میخوام که این اتفاق نیوفته و این فایل همیشه در حال اجرا باشه ممنون میشم یه کمکی بکنید.


exec("nohup php {$pg['PATH']} >/dev/null 2> /dev/null & echo $!")

MMSHFE
سه شنبه 27 فروردین 1392, 10:43 صبح
این کد رو تست کنید:

shell_exec("nohup php {$pg['PATH']} > /dev/null &");
و توی فایل PHP که مسیرش توی متغیر ['pg['PATH$ ذخیره شده، این کدها رو بگذارین:


set_time_limit(0);
ignore_user_abort(true);

kashkol2
سه شنبه 27 فروردین 1392, 11:24 صبح
به این نیاز دارم چون شناسه اش رو PID رو میخوام
echo $!
ولی

exec("nohup php {$pg['PATH']} >/dev/null & echo $!")
رو امتحان کردم.

kashkol2
سه شنبه 27 فروردین 1392, 11:26 صبح
توی اون فایل هم دو دستوری که گفتید را قبلا نوشته بودم

MMSHFE
سه شنبه 27 فروردین 1392, 11:44 صبح
پس با این اوصاف، باید با پشتیبانی هاستتون تماس بگیرین چون احتمالاً Server یکبار توی اون ساعت Restart میشه. یا اینکه اگه پشتیبانی جواب نداد، با Cron اسکریپت رو طوری تنظیم کنید که دوباره مثلاً ساعت 01:01 اجرا بشه. به یه نحوی هم کاری که تا حالا انجام داده رو ذخیره کنید که در فراخوانی مجدد، ادامه کار رو انجام بده.

kashkol2
سه شنبه 27 فروردین 1392, 16:00 عصر
من در مورد Cron چیزی نمیدونم. اگه یه توضیح کوتاه بدید و بگید چی هست و یه منبع هم معرفی کنید خیلی ممنون میشم.

kashkol2
سه شنبه 27 فروردین 1392, 16:07 عصر
ممنون پیدا کردم.