بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته ... تحية طيبة استاذي الغالي وبعد
بالنسبة إلى socket فكما ذكرت يجب ان يكون برنامج الذاكرة في حالة listen وهذا يشير منطقياً إلى ان البرنامج موجود في الذاكرة.....
وانت تريد اعطاء العميل ip و port للوصول إلى السيرفر وهذا الكلام برضه سليم ....
ولكن لحظة دقق معين ....
php ليست الا ملفات عادية يتم استدعائها بعملية تحفيز وهي بكتابة مسارها ضمن URL لذلك هي ليست برنامج معزول وإنما ملف يحتاج بعض الأشياء لإكماله وترجمته وإخراجه حسب الصورة المطلوبة وهذه الترجمة يتكفل بها php compiler لذلك سيكون الملف موجود في الذاكرة لحظة طلبه من خلال العنوان وتمريره إلى php compiler لذلك سيظل الملف في الذاكرة إلى ان ينتهي php compiler من ترجمته ثم يحذف الملف من الذاكرة وهذه العملية تتم بسرعة عالية تقاس بأجزاء من الثانية يعني هنا مشكلة فالبرنامج السيرفر يجب ان يظل متواجد ضمن ذاكرة السيرفر طالما أن جهاز السيرفر يعمل لكي يتلقى هذا السيرفر طلبات من العديد من Client لذلك سكربت php لايمكن التعامل معه كسيرفر في اعتقادي الشخصي وحسب ماهو واضح .... فهنا مشكلة في بقاء الملف ضمن ذاكرة جهاز السيرفر...
phpGTK
ولكن هل php GTK هي حل ؟
فكما يقولون ان phpGTK تعمل لصنع Desktop Application وليس لها علاقة بالمواقع وغيره
فأنا اقول مثلاً قم بعمل Desktop Application على جهاز السيرفر يعمل كـ Server Program
وسيكون هو في جهاز السيرفر مجرد Client Program لأنه معمول على phpGTK اما برامج Client
الموزعة للعملاء فستكون مختلفة عن مزايا البرنامج المكتوب phpGTK .
وأظن ايضاً ان php GTK تعطي حلاً حسب اعتقادي الشخصي والسبب هو ان php GTK تعطي
execution File in run time mode
اي تعطي ملفات تنفيذية ولكن تعطيها وقت التشغيل يعني سيكون php compiler معها لذلك إذا جعلت ملفات php Gtk تعمل من ضمن السيرفر اي تعمل ضمن جهاز السيرفر كـ Client Program
وتعمل كـ Server Program بالنسبة لبرامج ال Client الموجودة ضمن اجهزة العملاء ويتم تشغيلها مع Process الخاصة بالسيرفر فإنه سيتم عمل ملف تنفيذي و إبقاءه في الذاكرة
وطالما ان جهاز السيرفر يعمل فسيظل البرنامج الخاص بالسيرفر يعمل اذا لم يقم احد بإيقافه وسيكون في الذاكرة
وعندها تستطيع استخدام اي سكربت php عادي على ما أظن ليعمل كـ Client Scrpt
أو تصنع Client Program بواسطة phpGtk
وهذه مجرد طريقة مفبركة لإبقاء البرنامج ضمن الذاكرة وهذا ما يتطلبه socket
يعني بإختصار إذا نجحت في إبقاء البرنامج في الذاكرة فإنه بنسبة طيبة وجيدة سيعمل.
أو أعانك الله وقم بعملها كـ CGI مكتبوبة على لغة C وهذه اقوى جداً ولكن المشكلة انها ستأخذ وقت
و لغة C تعطي دعما لمكتبات socket بشكل ممتاز سواء على ويندوز بإستخدام مكتبات winsock او على linux او بقية الأنظمة واجعله يعمل كسيرفر ثم قم بعمل برامج تنفيذية ذات واجهات واستخدم مثلاً Visual C لعمل برنامج Client والسبب انه يعطي دعم ممتاز لذلك
ويمكنك ايضاً كتابة server و client في بيئة Visual C فهو يعطيك مكتبات socket على شكل OOP ضمن مكتبة MFC الخاصة بشركة ميكروسوفت ويمكنك من عمل برنامج واحد يعمل كـ Client و Server
في وقت واحد وذلك بتحديد نوع العملية هل listen او recive او send وما إلى ذلك..ز
وأخيراً ....
أرجوا لك التوفيق مع عملك ولاتنسى ان ملفات php هي ملفات عادية يتم وضعها ضمن الذاكرة اثناء استدعائها من قبل المترجم و في الاخير سيتم عمل تنظيف وإخلاء الذاكرة من وجود الملف يعني لن تستفيد شئ على ما أظن فكل عمل socket هو بإختصار (الذاكرة) ووجود البرنامج السيرفر فيها.
وهذا مالدي الآن فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله عز وجل
أخوك عبدالله عيد
__________________
قال صلى الله عليه وسلم (كلمتان خفيفتان على اللسان ثقيلتان في الميزان (سبحان الله وبحمده ** سبحان الله العظيم) اوكما قال صلى الله عليه وسلم . (فهل هذه الكلمتان ثقيلتان على لسانك كي لا تقولها مرة واحدة في اليوم على الأقل)