• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ارتباط برنامه php در بخش CLI و وب
#1
سلام

من درحال حاضر روی پروژه‌ای دارم کار میکنم که سناریوی اون به این صورته :
یه سری دستگاه سخت افزاری اطلاعات خاصی رو از طریق شبکه gprs روی یک پورت خاص ارسال میکنن برنامه php ما روی اون پورت listen میکنه و اطلاعات را دریافت میکنه. این بخش با php cli اجرا میشه. بخش دیگری از برنامه با کاربر ارتباط داره و اطلاعات مانیتور شده از این سخت افزارها رو به کاربران نشون میده و همچنین کاربران میتونن یه سری دستورات را از طریق برنامه‌ به دستگاه ارسال کنن.

مشکل من اینه که بخش دوم برنامه که برای کاربران تحت وب اجرا میشه از بخش اول که ارتباط با سخت افزاره و از طریق CLI اجرا میشه کاملا جداست و نمیدونم روش منطقی برقراری این ارتباط چیه!

برای مثال کاربر از طریق برنامه تحت وب تنظیمات دستگاه رو انجام میده که این دستور پس از پردازش باید برای بخش CLI فرستاده بشه و درصورت برقرار بودن ارتباط برای دستگاه ارسال بشه! (توی دات نت با فراخوانی یک رویداد(event) این کار قابل انجامه).
  پاسخ
تشکر شده توسط :
#2
بخش CLI شما یه حلقه بی نهایت باید باشه درسته؟
می تونید داخل یه فایل بزارید و بعد داخل CLI هر از گاهی اون فایل رو بررسی کنید
  پاسخ
تشکر شده توسط :
#3
حجم تبادل اطلاعات بین سخت افزارها و سرور خیلی زیاده و ارتباط با فایل روی سرعت تاثیر زیادی میزاره و روش منطقی نیست!
  پاسخ
تشکر شده توسط :
#4
من فکر میکنم برای بخش دسکتاپ بسته به نوع سیستم عاملتون از یه زبان برنامه نویسی مناسب استفاده کنین.
اگه از ویندوز استفاده میشه از ویندوز سرویس استفاده کنین.
  پاسخ
تشکر شده توسط :
#5
من این کارو با php کردم از هر زبان دیگه ای هم استفاده میکردم بازهم این مشکل وجود داشت البته خیلی بدتر چون سیستم یکپارچه نمی‌شد!
اگه کل سیستم با دات نت یا جاوا باشه به دلیل یکپارچگی سیستم در سطح پروژه مشکلی برای ارتباط وجود نداشت اما بخاطر نیاز به سرعت اجرا سراغ php رفتیم و الان تنها مشکل همینه که یکپارچگی در سطح پروژه وجود نداره و مفسر cli از مفسر وب جداست و عملا دو برنامه جدا از هم داریم!

من دنبال یه trick سریع هستم چون اینجا سرعت خیلی مهمه!
  پاسخ
تشکر شده توسط :
#6
ببینید شما اگر از ویندوز استفاده میکنین با استفاده از دات نت میتونین یه سرویس ویندوز ایجاد کرده که به صورت مداوم به یه پورت گوش میکنه و میتونین این سرویس ویندوز رو از طریق وب سرویس نظیر soap و یا Rest به PHP متصل کنین.
یعنی در صورت بوجود اومدن event سرویس ویندوزی ، وب سرویس PHP رو کال کنه.
  پاسخ
تشکر شده توسط :
#7
نقل قول:ببینید شما اگر از ویندوز استفاده میکنین با استفاده از دات نت میتونین یه سرویس ویندوز ایجاد کرده که به صورت مداوم به یه پورت گوش میکنه و میتونین این سرویس ویندوز رو از طریق وب سرویس نظیر soap و یا Rest به PHP متصل کنین.

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

من از soap توی php قبلا استفاده کردم ولی تابحال با php وب سرویس نساختم آیا میشه با php وب سرویس تعریف کرد؟و اگه من بتونم این کارو انجام بدم مشکلم حل میشه؟
  پاسخ
تشکر شده توسط :
#8
مشکل شما به این روش حل نمیشه
مگر اینکه روی یه سوکت دیگه هم listen کنید و از اون طریق به cli ارتباط‌ برقرار کنید
  پاسخ
تشکر شده توسط :
#9
مشکلی نیست خوب یه پورت دیگه برای listenکردن ایجاد میکنم!

اینجا در مورد ایجاد وب سرویس با php نوشته شده و فقط تنها نکته اینه که برنامه وب سرویس از طریق cli قابل اجرا باشه بنابرین میشه در حالتی که cli با سخت افزارها در ارتباطه خدماتش رو به برنامه تحت وب بصورت وب سرویس ارائه کنه!

نظرتون چیه؟
  پاسخ
تشکر شده توسط :
#10
وب سرویس نیاز به این داره که توسط یه وب سرور فراخونی بشه. پس اصلا به دردتون نمی خوره
همون روش دیگه که گفتم ایجاد یه پورت listen کنه و از طریق اون پورت بتونی اطلاعات رو بفرستی
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان