dr.fet91

سوکت پروگرامینگ در php و مرورگر با جاوا اسکریپت

dr.fet91 ۱۳۹۹/۰۵/۲۱ زبان برنامه‌نویسی پی‌اچ‌پی

سلام

من دارم روی یک پروژه ای کار می کنم که بخشی از اون مسابقه آنلاین هست.

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

نوشتن این کار با روش های ساده کار راحتیه مثلا میشه با جاوا اسکریپت یک تابع نوشت که بره هر 3 ثانیه یک بار تغییرات رو بررسی کنه و به مرورگر کاربر نشون بده.

اما این کار ترافیک زیادی در شبکه درست میکنه و به نظرم منطقی نیست به علاوه که این روش سرور رو هم کند میکنه!

جوری که فهمیدم میشه با سوکت پروگرمینگ این کار رو کرد حتی یه نمونه از سایت های دیگه گیر آوردم اما یه مشکلی داره!

تمام سورسهایی که من گیرآوردم برای پیام رسان ها بودن و همشون باید یک فایل رو اول اجرا کنی حالا می تونه از طریق مرورگر باشه یا ترمینال! من توی سرورها و cpanel چیزی پیدا نکردم که این کارو بکنه و باید خودم یه جوری اون فایل رو ران کنم اما چون اون فایل حلقه تکرار داره به صورت دائم علامت لودینگ مرورگر میمونه جوری که انگار سایت کامل لود نشده!

و من هم فکر نکنم راهش این چیزا باشه!

دوستان کسی میدونه راه حل این کار چیه و من به طور کل باید چیکار کنم؟

لازم به ذکر است که من از هیچ فریم ورکی استفاده نمی کنم! و فریم ورکی در کار نیست!

پاسخ‌ها به این تاپیک
محمدحسین جوان بخت
محمدحسین جوان بختتوسعه دهنده وب هستم
۱۳۹۹/۰۵/۲۲

سلام

اگر از cpanel و هاست اشتراکی استفاده میکنید فکر نکنم موفق به استفاده از webSocket بشید. برای استفاده از webSocket باید دسترسی SSH داشته باشید تا بتونید یک اسکریپت رو روی سرور اجرا کنید که در هاست های اشتراکی معمولا این دسترسی داده نمیشه.

اگر دسترسی به SSH دارید و میتونید این کار رو انجام بدید میتونید از socket_extension استفاده کنید. البته باید دقت داشته باشید که این extension بر روی سرور و php فعال باشه. مقاله زیر شاید کمک کنه بهتون برای شروع. یک چت اپلیکیشن ساده با استفاده از php و javascript هست:

https://phppot.com/php/simple-php-chat-using-websocket/

همچنین یکی از فریمورک هایی که برای socket programming در php میشناسم، فریمورک workerman هست. میتونید یه نگاهی بهش بندازید:

https://github.com/walkor/Workerman

https://github.com/walkor/phpsocket.io

یه روش پیشنهادی هم اینه که از nodejs برای این کار استفاده کنید. چرا که سریعتر جواب خواهید گرفت و همچنین استفاده از پکیج هایی مثل socket.io کار شما رو در فرانت اند و بک اند یکدست و ساده خواهد کرد.

موفق باشید.