مرحبًا ، في أغسطس سنعقد اجتماعًا في موسكو مع متحدثين من مدن أخرى ، واجتماع
BeerPHP وبث الجزء الرسمي لكل من لا يستطيع الانضمام.
اليوم بدأنا في تقديم المتحدثين . سيأتي سيرجي جوك إلى الاجتماع من بريانسك - لا يوجد أي حزب في مدينته ، ولديه ما يخبره عن PHP غير المتزامن: لقد كتب كتبًا حول هذا الموضوع ، وسلسلة من المقالات والمزيد. في ما يلي نص لبودكاست حديث حول هذا الموضوع ، روابط إلى الاستماع ومشاهدة الإصدار ، بالإضافة إلى تفاصيل حول mitap نفسه.
Pyotr Myazin الملقب PQR : اليوم ، أنا على اتصال مع أحد الخبراء الرئيسيين في ReactPHP. سيرغي ، لقد زرت مؤخراً reactphp.org ووجدتك في الصفحة الرئيسية. تكتب الكثير عن الموضوع ، حتى يكون لديك قناتك الخاصة مع تعليمات الفيديو. أخبرني كيف توصلت إلى هذا ، ما الذي علقك في ReactPHP؟في الحقيقة ، أنت تعيد اكتشاف اللغة التي كنت تكتبها لسنوات عديدة
سيرجي الملقب
seregazhuk : قبل عامين ، في وظيفة سابقة ، كان من الضروري أن يكتب سيناريو من شأنه أن يرن العملاء باستمرار ويعمل بسرعة كبيرة. يجب إكمال المهمة "بالأمس" ، ولم يكن هناك سوى مطوري PHP في الفريق - لم يكن هناك وقت لمجموعة جديدة ، كما تعلمون. لكن اتضح أن الجميع سمعوا شيئًا عن ReactPHP. لقد وضع نفسه جاهزًا للإنتاج ، وكان كل شيء سهلاً للغاية: لقد قمنا للتو بتثبيت الشركة من خلال الملحن ، وكان من الممكن كتابة كود غير متزامن. نتيجة لذلك ، كتبوا حلاً على ذلك ، أطلقوه ، كان الجميع راضٍ.
أدركت أن لدينا أداة - لكن لم تكن هناك مقالات تقريبًا ، وأمثلة عملية مثل "لدينا مثل هذه المشكلة ، لقد حللنا مثل هذا" ، لا باللغة الروسية ولا باللغة الإنجليزية. ونتيجة لذلك ، كتبت مقالتين على مدونتي ، وحصلت على ردود فعل إيجابية ، وهذا كل شيء - لقد دفعني إلى حد ما. لقد اعتدنا على نموذج طلب - الاستجابة ، ولكن الأمر يستحق تحميله في رمز غير متزامن ، وسوف تسأل على الفور: "كيف يمكن أن يكون ذلك؟"
بيتر: دعنا نتحدث مرة أخرى ، ما المشكلة التي تحلها الشفرة غير المتزامنة بالنسبة لنا ، ولماذا تحتاج ReactPHP على وجه الخصوص؟
Sergey: يحتوي كل تطبيق تقريبًا على مكالمات API أو التفاعل مع نظام الملفات أو استعلامات قاعدة البيانات. عندما ننتظر إجابة منهم ، يكون معالجنا خاملاً - بدلاً من القيام بشيء مفيد. لا يمكنك الانتظار للحصول على إجابة ، ولكن بدء العمليات غير المحظورة والمضي قدمًا. السؤال الذي يطرح نفسه: "إذا حصلنا على ReactPHP في كل مكان من أجل I / O ، فهل ستكون طلباتنا أسرع عدة مرات؟"
لسوء الحظ ، لا يمكنك فقط أخذ طلباتنا وإعادة كتابتها إلى تطبيقات غير متزامنة

هذا هو سيرجي جوكSeryozha هو مؤلف الكتب ReactPHP للمبتدئين ، التعلم PHP يحركها الحدث مع ReactPHP و PHP OOP الطريق وأكوام من الفوائد الأخرى
سيرجي: سأفكر في استخدام ReactPHP في الحالات التي يكون فيها الأداء حرجًا ، و I / O هو وعاءنا الذي يحجب كل شيء. علاوة على ذلك ، أوصي بعدم نقل التطبيق بأكمله إلى القضبان غير المتزامنة ، أي لإعادة كتابة هذا botlock معين. عادةً ما يتم إدراج شريحة غير متزامنة في رمز الحظر التقليدي بدلاً من محاولة إعادة كتابة التطبيق بالكامل.
بيتر: حسنًا ، لكن لماذا لا نبدأ بعض عمليات PHP؟ هذا هو الخمول ، ولكن واحد هو مشغول.سيرجي: وكيف يمكننا تنسيق النتائج؟ لنفترض أننا بحاجة إلى الحصول على البيانات من ثلاثة مصادر ، ونجري مكالمات إلى ثلاثة واجهات برمجة تطبيقات ، ثم نقوم بتكوين النتائج ومنحها للمستخدم. إذا قمنا بإنشاء ثلاثة تدفقات منفصلة ، فستظهر مشكلة تنسيق النتيجة.
مع نهج غير متزامن ، كنا ببساطة نديرها ، إذا جاز التعبير ، بالتوازي ، ثم نحصل على النتيجة ومعالجتها. مع المواضيع ، سيكون عليك تنسيق هذه الكرة بطريقة أو بأخرى ، أي ستكون هناك مشكلة في الحالة. يبدو أن هذا أكثر تعقيدًا من اتباع نهج غير متزامن.
بيتر: أنا أفهمها. كان لدي هذا الفكر في رأسي: إذا كنا نريد زيادة عدد المستخدمين. تتم معالجته في الثانية الواحدة ، كيف سيتم إطلاق حزمة التطبيق بالكامل من Symfony في الإصدار غير المتزامن ومعالجة عدد أكبر من الاتصالات؟سيرجي: لن أفعل ذلك. في كثير من الأحيان ، لا يتباطأ التطبيق بالكامل. في حالة نشوء مسألة الأداء ، فمن المحتمل وجود بعض الاختناقات في الداخل ، مما يؤدي أيضًا على الأرجح إلى بطء في الإدخال / الإخراج. والآن أود ترجمة هذه الاختناقات إلى ReactPHP.
سيبدو كبرنامج صغير غير متزامن داخل رمز الحظر المعتاد: على سبيل المثال ، اتصلنا بثلاثة طلبات بالتوازي ، وقمنا بمعالجتها وإرسال استجابة إلى المستخدم ، وسيكون إجمالي وقت التنفيذ مساوياً لوقت أبطأ طلب. إذا في حالة النهج التقليدي ، كنا ننتظر الطلب الأول ، الثاني والثالث. لكن التطبيق لم يصبح غير متزامن من هذا.
وإذا قارنا كل شيء مع NodeJS وغيرها؟

غادر - Pyotr Myazin ، مضيف خمس دقائق PHPوقال انه سيكون في mitap وكان على وشك الهبوط في afterparty. إذا كان هناك موضوع للبودكاست الجديد ، فسيسعدني مناقشته
بيتر: وإذا قارنا كل شيء مع NodeJS ، دعنا نقول ، أو الذهاب ، هناك حقا غير متزامن من خلال التطبيق بأكمله. جميع الطلبات إلى قاعدة البيانات ، إلى نظام الملفات - كلها غير متزامن في الداخل. هل هذا يعني ، من حيث المبدأ ، إذا كان كل شيء مكتوب في شكل غير متزامن ، هل هناك أي ربح؟سيرجي: سيكون من المربح إذا كانت المشكلة الأولية هي I / O. ثم نعم ، سوف نحلها. سيكون كودنا فعالاً قدر الإمكان ، ويكون قادرًا على معالجة أكبر عدد ممكن من المهام بدلاً من أن يكون خاملاً وينتظر معالجة هذا الإخراج. ولكن إذا كانت المشكلة في البداية ليست في I / O ، فبالكتابة كل شيء بشكل غير متزامن ، من غير المرجح أن نفوز بأي شيء ، ويمكننا الحصول على تعليمات برمجية معقدة يصعب قراءتها وصيانتها.
بيتر: العودة إلى PHP. لذلك ، لدينا ReactPHP ، ومن نظائرها الشهيرة Swoole ، Amp و Ext-async. وقل لي في المقارنة ، ما هو الفرق بين هذه المشاريع ، ومدى جودة ReactPHP ، هل هو سريع وهل له أي عيوب مقارنة بنفس Swoole؟
سيرجي: من بين الثلاثة ، بصراحة ، قمت باختبار Amp فقط ، ولأنه ، مثل ReactPHP ، مدعوم من خارج الصندوق. وهذا هو ، وضعنا المكونات اللازمة من خلال الملحن وانت القيام به. وأنا هنا لا أحب القصص ذات الامتدادات. لأنه إذا تركنا وحدنا مع PHP وغير متزامن ، إذن ، يبدو لي ، أنه من المنطقي استخدام اللغة والأشياء الأصلية - وإذا استخدمنا امتدادات إضافية ، فلن يكون هنا PHP غير متزامن بشكل خاص ، ولكن امتدادات غير متزامنة لـ PHP.
كيف ReactPHP حقا جاهزة الإنتاج؟
بيتر: "الدعم طويل الأجل" مكتوب على موقعه على الانترنت. وهذا هو ، نوع من الدعم طويل الأجل ، دون تغييرات جوهرية في API. هل هذا صحيح؟ هل كل شيء مرتفع بما فيه الكفاية؟سيرجي: نعم. مشروع ReactPHP نفسه قديم بالفعل. يعمل منذ العام الثاني عشر وهو يبلغ من العمر 7 سنوات. لديه بالفعل ما يكفي من الوقت جاهز للإنتاج. ونعم ، علاوة على ذلك ، هنا يأتي الدعم طويل الأجل للمكونات الرئيسية لمدة عامين. وهذا يعني أنه يمكنك ربط هذه المكونات بأمان وتلقي الإصلاحات والتحديثات وعدم القلق بشأن التوافق مع الإصدارات السابقة. لمدة عامين يتعهدون بالحفاظ على إصداراتهم ، لن ينكسر أي شيء. أعتقد أن هذا رائع حقًا ، فهذه خطوة كبيرة إلى الأمام. بقدر ما أتذكر ، حتى وقت قريب ، ناقش Amp بعض مكوناته ، لم يتخذوا قرارًا تامًا بشأن الواجهة وواجهة برمجة التطبيقات العامة الخاصة بهم.
بيتر: أين تنصح ببدء تعلم ReactPHP؟ بالإضافة إلى الوثائق الرسمية ودروس الفيديو الخاصة بك ، بالطبع. أين توجد كل المجتمعات ، هل هناك أي محادثة برقية أو دردشات أو منتديات؟سيرجي: لسوء الحظ ، لا أعرف هذا المجتمع المباشر. هناك
حساب Twitter نشط للغاية: يمكنك أن تطرح الأسئلة وتهتم بها. ويستجيب عمال المناجم بسرعة كبيرة - يمكنك الكتابة إليهم شخصيًا على Twitter. فعلت ذلك ، وطلب منهم بعض الأشياء.
بيتر: حسنًا ، شكرًا لك على هذه القصة التفصيلية حول ReactPHP - وفي هذا الصدد ، سأعلن عن Panda Meetup ، الذي سيعقد في 22 أغسطس في موسكو في مكتب Skyeng. سوف تؤدي هناك ، أليس كذلك؟سيرجي: نعم ، هذا صحيح. تعال والدردشة.
بيتر: سيكون هناك أيضًا تقرير حول تصميم النطاق المُدار ، وهو أيضًا موضوع مثير للاهتمام في سياق PHP ، [وتم إضافة زوجين آخرين] ، وكما أخبرني المنظمون ، سيكون هناك بعض الأطراف التالية.فائدة: