PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آیا امکان پردازش موازی در php وجود داره؟



mehran-b
August 1st, 2017, 00:55
سلام بر اساتید و بزرگان

همون طور که میدونید کدها در php از بالا به پایین اجرا میشه و تا جایی که من میدونم امکان اینکه دو تابع رو همزمان بشه اجرا کرد وجود نداره.

سوال من از شما اینه که آیا امکان این کار وجود داره که بشه دو تابع تا دو فایل php رو همزمان اجرا کنم؟

تشکر

T.Toosi
August 1st, 2017, 01:12
سلام، برای multi threading یا processing در php باید extension خارجی نصب و استفاده بکنید جون به صورت پیش فرض php همچین امکانی ندارد، php Parallel جستجوی بکنید.

mehran-b
August 1st, 2017, 01:43
سلام، برای multi threading یا processing در php باید extension خارجی نصب و استفاده بکنید جون به صورت پیش فرض php همچین امکانی ندارد، php Parallel جستجوی بکنید.

والا سرچ کردم ولی چیز زیادی متوجه نشدم.
شما خودتون روش خاصی رو که زیاد هم پیچیده نباشه مدنظر ندارید؟

rezaonline.net
August 1st, 2017, 12:54
سلام بر اساتید و بزرگان

همون طور که میدونید کدها در php از بالا به پایین اجرا میشه و تا جایی که من میدونم امکان اینکه دو تابع رو همزمان بشه اجرا کرد وجود نداره.

سوال من از شما اینه که آیا امکان این کار وجود داره که بشه دو تابع تا دو فایل php رو همزمان اجرا کنم؟

تشکر

شما میتونی از therad برای اینکار استفاده کنید .
http://php.net/manual/en/book.pthreads.php
http://masnun.com/2013/12/15/multithreading-in-php-doing-it-right.html

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

mehran-b
August 1st, 2017, 13:35
شما میتونی از therad برای اینکار استفاده کنید .
http://php.net/manual/en/book.pthreads.php
http://masnun.com/2013/12/15/multithreading-in-php-doing-it-right.html

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

در حال طراحی یک سیستم هوشمند خبری هستم و برای دریافت آخرین اخبار از منابع مورد نظر باید تابع مربوط به اون منبع رو فراخوانی کنم.
حدودا فرآیند ایندکس اخبار هر منبع 1 دقیقه زمان میبره و تعداد منابع زیاد هست به همین علت باید از پردازش موازی استفاده کنم تا زمان ایندکس مطالب رو کاهش بدم.

T.Toosi
August 2nd, 2017, 04:47
در حال طراحی یک سیستم هوشمند خبری هستم و برای دریافت آخرین اخبار از منابع مورد نظر باید تابع مربوط به اون منبع رو فراخوانی کنم.
حدودا فرآیند ایندکس اخبار هر منبع 1 دقیقه زمان میبره و تعداد منابع زیاد هست به همین علت باید از پردازش موازی استفاده کنم تا زمان ایندکس مطالب رو کاهش بدم.

ابتدا باید php شما با دوباره با کانفیگ --enable-maintainer-zts ساخته یا همان Build بشه، سپس باید pthreads نصب کنید (آموزش نصب (http://php.net/manual/en/pthreads.installation.php))، سپس برای استفاده، کدی که میخواهید در نخ جدا از thread برنامه اجرا کنید، باید یک کلاس باشد و این کلاس باید از کلاس Thread ارث بری کرده باشد، کلاس Thread یک متد با نام Run دارد که در کلاس خود باید implement کنید و کد هایی که میخواهید اجرا کنید در این متد قرار بدید.

rezaonline.net
August 2nd, 2017, 11:22
در حال طراحی یک سیستم هوشمند خبری هستم و برای دریافت آخرین اخبار از منابع مورد نظر باید تابع مربوط به اون منبع رو فراخوانی کنم.
حدودا فرآیند ایندکس اخبار هر منبع 1 دقیقه زمان میبره و تعداد منابع زیاد هست به همین علت باید از پردازش موازی استفاده کنم تا زمان ایندکس مطالب رو کاهش بدم.

شما n فید خبری دارید ، پس بهتره بصورت صف اجراش کنید .
هر فید یک فیلد با سه پارامتر finish/in_process/wait داشته باشه
هر بار از صف یک فید wait بردارید و تغییر بدید به in_process و بعد از پایان تبدیل کنید به finish

فایل که این عملیات رو توش انجام میدید میتونید بصورت cronjob اجرا کنید مکرر
میتونید ده تا کران جاب بر روی این فایل اعمال کنید لذا مثل این هست که ده پروسس همزمان اجرا شود .

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

miladgh
August 3rd, 2017, 17:58
از ایزار Gearman هم میتونی توی php استفاده کنید



$worker= new GearmanWorker();
// add the job server (bad host/port)
$worker->addServer();


باید اکستنشن رو نصب کنید

PersianDOT
August 5th, 2017, 14:49
اینگونه کارها بهتره که در cron و بکگراند انجام بشه.
در کرون میتونید چندین پروسس پی اچ پی را بدون اینکه نیاز باشه منتظر تموم شدن قبلی باشید اجرا کنید و به این صورت به صورت موازی چند پروسس پی اچ پی خواهید داشت.

mehran-b
August 6th, 2017, 01:30
اینگونه کارها بهتره که در cron و بکگراند انجام بشه.
در کرون میتونید چندین پروسس پی اچ پی را بدون اینکه نیاز باشه منتظر تموم شدن قبلی باشید اجرا کنید و به این صورت به صورت موازی چند پروسس پی اچ پی خواهید داشت.

بله خودمم هم با راهنمایی های که شما و دوستان کردید به این نتیجه رسیدم که باید از کرون جاب استفاده کرد.