النتائج 1 إلى 4 من 4

الموضوع: استخدام الSocket في PHP

  1. #1
    عضو جديد
    تاريخ التسجيل
    Nov 2003
    المشاركات
    4

    استخدام الSocket في PHP



    السلام عليكم

    لدي سؤال بسيط عن socket listen و سؤالي هو عندما انشئ Socket و استخدم Listen في صفحتي PHP
    واردت مثلا ان اقوم بالاتصال مع صفحتي يعني Connect هل يجب ان تكون الصفحة محملة في ذاكرة السيرفر
    ينتظر اتصال من احد العملاء .

    يعني لتبسيط السؤال على سبيل المثال صنعت برنامجين مكتوبين بلغة السي هما زبون و مخدم
    للاتصال الزبون مع المخدم يجب ان يكون السيرفر في حالة Listen ومحمل البرنامج في الذاكرة و يحجز بورت معين
    للانتظار لتلقي الاتصال من احد العملاء و يجب ان نعطي للبرنامج العميل الايبي و البورت للتصال و هكذا يتم الاتصال


    فهل يجوز ذلك في الPHP يعني برنامج السيرفر مكتوب بPHP و العميل باي لغة اخرى هل استطيع تامين الاتصال بين الرنامجين


    ملاحظة لقد بحثت في موقع php.net ولكن لم اجد جواب لسؤالي هل يبقى برنامج السيرفر المكتوب ب PHP ان يكون جاهزا و مستعدا لتلقي الاتصال
    دون تشغيل الصفحة طبعا بدون تدخل السيرفر .

    يمكن يكون سؤالي فيه بعض الاخطاء و لكن ارجو ان اجد الجواب الكافي منكم .


    ولكم جزيل الشكر





    __________________
    إستخدم ملفك الخاص لكتابة توقيعك
    Net-Man غير متواجد حالياً


  2. #2

    بسم الله الرحمن الرحيم



    السلام عليكم ورحمة الله وبركاته ... تحية طيبة استاذي الغالي وبعد


    بالنسبة إلى 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 هو بإختصار (الذاكرة) ووجود البرنامج السيرفر فيها.

    وهذا مالدي الآن فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله عز وجل
    أخوك عبدالله عيد





    __________________
    قال صلى الله عليه وسلم (كلمتان خفيفتان على اللسان ثقيلتان في الميزان (سبحان الله وبحمده ** سبحان الله العظيم) اوكما قال صلى الله عليه وسلم . (فهل هذه الكلمتان ثقيلتان على لسانك كي لا تقولها مرة واحدة في اليوم على الأقل)
    عبدالله عيد غير متواجد حالياً

  3. #3
    عضو جديد
    تاريخ التسجيل
    Nov 2003
    المشاركات
    4


    السلام عليكم

    الف شكر استاذي بس انت الي قولته انا فكرت فيه بس لنفترض ان المستخدم ليس لديه سيرفر بس مساحة معينة لذلك لا استطيع ان اتعامل مع السيرفر مثل ما بدي يعني هذه ما من صلاحيات المستخدم
    انا ادور على طريقة انتعمل مع السيرفر مباشرة (طبعا من دون استخدام الفايلات)


    على اي حال مشكور كتير استاذ عبد الله تعبتك معاي لك جزيل الشكر





    __________________
    إستخدم ملفك الخاص لكتابة توقيعك
    Net-Man غير متواجد حالياً

  4. #4
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    ممكن ... سوي set_time_limit(0) وسوي listen على كيفك مع ملاحظه انك يجب ان تشغله عن طريق SSH .
    وسوف يعمل على شكل سرفر ..... وتستطيع ان تتصل به هذه هو الحل الذي لدي





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .
    daif غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض