PDA

View Full Version : استفاده از Thread ها در php



ftmhPhp
دوشنبه 18 خرداد 1394, 17:33 عصر
با سلام و تشکر
میخواستم از دوستانی که در مورد موارد استفاده و نحوه استفاده thread در php اطلاعاتی دارند بخوام در این زمینه راهنمایی بفرمایند.

reza_alie
دوشنبه 18 خرداد 1394, 18:06 عصر
خوب شما سوال ببرسین دوستان راهنمایی کنن دقیقا چی می خوای؟؟؟؟

ftmhPhp
دوشنبه 18 خرداد 1394, 23:11 عصر
موارد کاربرد thread در php رو میخواستم بدونم

Unique
سه شنبه 19 خرداد 1394, 00:33 صبح
نه فقط در مورد php بلکه هر جا بخواهیم یکسری عملیات که معمولا زمان زیاید میبرند را به صورت همزمان انجام بدیم و بخوایم Multi Task باشه از thread ها استفاده میکنیم. من خودم تا حالا ازشون توی هیچ پروژه ای استفاده نکردم یعنی نزدیک به ۶ سال برنامه نویسی php و تا حالا نیاز نشده ،‌توی net. برای گرفتن اطلاعات از چند سایت استفاده کردم.

us1234
سه شنبه 19 خرداد 1394, 10:51 صبح
بعضی مفهوم ها در تحت وب با برنامه نویس سیستم عامل کاملا تفاوت داره .
مثلا در زبان های سمت سیستم عامل یک پروسه برای اجرا کد برنامه هست و برنامه میتونه تا ابد ( از نظر تئوری ) در حالت اجرا باقی بماند و استفاده از تکنیک multi-thread در این گونه برنامه ها برای اهداف مخلتف ضروری است .

مثلا در یک برنامه در C# برای شمارش اعضا یک حلقه معمولی میتوان به جای for از parallel for استفاده کرد که عملا به تعداد thread های cpu حلقه به تکه ها کوچک تر خرد میشود و زمان محاسبه به شکل چشم گیری کم میشود .

ولی در تحت وب همه چیز بر اساس multi-threading طرح ریزی شده ، اینجا هر بازدید کننده که یک فایل پی اچ پی را اجرا میکند در اصل دارد یک thread را اجرا میکند هر بازدید کنده بر اساس PHPSESSID یا موارد مشابه شناسایی میشود .

برای اینکه بتوانید بالاترین پردازش را از سخت افزار بگیرید می توانید یک فایل را در چند مرورگر در لحظه اجرا کنید ( یا مثلا رباتی بسازید که فایل را در لحظه با PHPSESSID های مختلفی ران کند )

عملا در تحت وب در سمت کد هیچ کار خاصی نباید انجام داد و کل روند پردازش thread ، تخصیص منابع بین هر thread و مدیریت آنها توسط وب سرور هایی مثل آپاچی انجام میشه .

ftmhPhp
سه شنبه 19 خرداد 1394, 15:26 عصر
ممنون از راهنمایی شما دوستان
اگر برای برنامه تحت وب این مفهوم معنی ندارد پس چرا php این قابلیت رو ایجاد کرده است ؟

Unique
سه شنبه 19 خرداد 1394, 15:28 عصر
ولی در تحت وب همه چیز بر اساس multi-threading طرح ریزی شده ، اینجا هر بازدید کننده که یک فایل پی اچ پی را اجرا میکند در اصل دارد یک thread را اجرا میکند هر بازدید کنده بر اساس PHPSESSID یا موارد مشابه شناسایی میشود .
برای اینکه بتوانید بالاترین پردازش را از سخت افزار بگیرید می توانید یک فایل را در چند مرورگر در لحظه اجرا کنید ( یا مثلا رباتی بسازید که فایل را در لحظه با PHPSESSID های مختلفی ران کند )
عملا در تحت وب در سمت کد هیچ کار خاصی نباید انجام داد و کل روند پردازش thread ، تخصیص منابع بین هر thread و مدیریت آنها توسط وب سرور هایی مثل آپاچی انجام میشه .

فکر نمیکنم منظورشون این بوده باشه ، احتمالا استفاده از thread ها در php هست که یکی از روش هاش استفاده از pthread (http://php.net/manual/en/book.pthreads.php) هست.

Unique
سه شنبه 19 خرداد 1394, 15:34 عصر
اگر برای برنامه تحت وب این مفهوم معنی ندارد پس چرا php این قابلیت رو ایجاد کرده است ؟
جناب us1234 استباه متوجه منظور شما شدن وگرنه خودشون از اساتید تالار هستن.

برنامه نویسی از طریق thread ها به خوبی در php از طریق pthreads (http://php.net/manual/en/book.pthreads.php) پشتیبانی میشه و کاربرد داره.
مثلا فکر کنین ما برنامه ای داریم که ۵ تا وبلاگ علمی را بررسی میکنه و آخرین پست ها را خارج میکنه ، در حال عادی باید ۵ بار پشت سر هم یک بلاک از کد را برای دریافت و خارج سازی اطلاعات اجرا کنیم اما با pthreads و استفاده از thread ها میتونیم ۵ تا thread درست کنیم و هر کدوم را مسئول درافت اطلاعات یک وب سایت و به صورت همزمان کنیم. اینطوری سرعت کار به شدت افزایش پیدا میکنه.

abolfazl-z
چهارشنبه 20 خرداد 1394, 05:43 صبح
معمولا بدرد صف دستوراتی می خورد که تکی اجرا می شوند. به عنوان مثال میتوان بجای یکی یکی اجرای دستور از صف، 5 دستور یا n دستور متناسب با سخت افزار جاری اجرا کرد. منم یکبار در vc++.net استفاده کردم و مثل PHP خیلی شیرین بود. اما در PHP تا به حال استفاد نکردم.

درواقع میشه گفت بهترین استفاده ایی که می توان در PHP کرد این است در پردازش های سنگینی که وقت زیادی میبرد زمان را با استفاده بالاتر از سخت افزار کم کنیم.