في ال Backend Engineering، فهم مفهومي (Synchronous) و (Asynchronous) يُعتبر مهما جدا.. شخصيًا، واجهت لبسًا كبيرًا في هذا المفهوم، ورغم أنني لم أصل إلى درجة التعمق الكامل فيه، إلا أنني سأشارك ما تعلمته لعله ينفع.
الخلاصة:
هناك مفهومان أساسيان:
- الأول (Synchronous) يمثل طريقة تقليدية لعمل request معينة وفي نفس الوقت يشكل مشكلة.
- الثاني (Asynchronous) هو الحل الذي أتى لمعالجة المشكلة الأولى
التحليل قادم..
--- Synchronous ---
يعني أن المرسل يقوم بإرسال طلب (Request) وينتظر ردًا فوريًا قبل أن يُكمل أي مهمة أخرى. في هذه الحالة يقوم ال CPU بوقف جميع العمليات الأخرى حتى يتم تنفيذ الطلب، ثم يسمى في العمل بعد ذلك.
--- مثال واقعي---:
تطبيق يطلب منك إدخال اسمك ليُظهر لك رسالة "مرحبًا (اسمك)".
- في هذا المثال، لا يستطيع التطبيق فعل أي شيء آخر أثناء انتظارك لإدخال الاسم، و اثناء انتظارك انت ابضا لل output.
- هذا يُمثل مشكلة كبيرة في التطبيقات المتوسطة والكبيرة، خاصة عند الاعتماد على الإنترنت في نقل البيانات، لأن البرنامج سبكون في حالة توقف في انتظار المستخدم أو الردمن server.
---المشكلة---:
هذا الأسلوب يجعل التطبيق غير قادر على التعامل مع مهام متعددة في نفس الوقت.. خصوصا في حالة استخدام الإنترنت.. قد يتسبب ذلك في بطء شديد أو حتى توقف البرنامج إذا تأخر ال input او ال response فب اعطاء output معينة.
---Asynchronous---
يعني أن التطبيق يستطيع معالجة طلبات اخرى دون انتظار الرد الفوري، مما يسمح له بأداء مهام أخرى بالتوازي.
---الحل---:
عند طلب إدخال اسمك في نفس مثال التطبيق السابق، يمكن للتطبيق:
- تجهيز UI في الخلفية.
- تخزين الاسم في قاعدة البيانات.
- تنفيذ مهام أخرى أثناء انتظار عرض الرسالة: "مرحبًا (اسمك)".
---مثال واقعي آخر---:
عند إرسال ايمايل، فإنك لا تنتظر الرد الفوري، بل تواصل أداء مهامك الأخرى، فب انتظار الرد على ايمايلك.
---كيف يعمل ال Asynchronous؟
يتم استخدام ما يُعرف بـ Threads لتنفيذ مهام متعددة في وقت واحد.
- على سبيل المثال، يمكن للتطبيق إرسال طلب إلى ال server وانتظار الرد في خلفية البرنامج، بينما يواصل معالجة واجهة المستخدم أو تنفيذ مهام أخرى..
فهم هذين المفهومين يساعد بشكل كبير في التعامل مع ال request/response model، مما يؤدي إلى:
- تحسين أداء التطبيقات
- زيادة كفاءتهه في التعامل مع عدد كبير من الطلبات أو المهام المتزامنة.
- تقديم تجربة مستخدم أفضل في التطبيقات الحديثة
- جعلك مطوى برمجيات افضل.
## لو أفادك المقال انشره و ادعو لنا بالمغفرة و الصحة و العلم النافع والعمل الصالح، لا حاجة لذكري اسمي في نشره 😊
#BackendEngineering #Backend #برمجة #تعلم_مستمر #تعلم
الخلاصة:
هناك مفهومان أساسيان:
- الأول (Synchronous) يمثل طريقة تقليدية لعمل request معينة وفي نفس الوقت يشكل مشكلة.
- الثاني (Asynchronous) هو الحل الذي أتى لمعالجة المشكلة الأولى
التحليل قادم..
--- Synchronous ---
يعني أن المرسل يقوم بإرسال طلب (Request) وينتظر ردًا فوريًا قبل أن يُكمل أي مهمة أخرى. في هذه الحالة يقوم ال CPU بوقف جميع العمليات الأخرى حتى يتم تنفيذ الطلب، ثم يسمى في العمل بعد ذلك.
--- مثال واقعي---:
تطبيق يطلب منك إدخال اسمك ليُظهر لك رسالة "مرحبًا (اسمك)".
- في هذا المثال، لا يستطيع التطبيق فعل أي شيء آخر أثناء انتظارك لإدخال الاسم، و اثناء انتظارك انت ابضا لل output.
- هذا يُمثل مشكلة كبيرة في التطبيقات المتوسطة والكبيرة، خاصة عند الاعتماد على الإنترنت في نقل البيانات، لأن البرنامج سبكون في حالة توقف في انتظار المستخدم أو الردمن server.
---المشكلة---:
هذا الأسلوب يجعل التطبيق غير قادر على التعامل مع مهام متعددة في نفس الوقت.. خصوصا في حالة استخدام الإنترنت.. قد يتسبب ذلك في بطء شديد أو حتى توقف البرنامج إذا تأخر ال input او ال response فب اعطاء output معينة.
---Asynchronous---
يعني أن التطبيق يستطيع معالجة طلبات اخرى دون انتظار الرد الفوري، مما يسمح له بأداء مهام أخرى بالتوازي.
---الحل---:
عند طلب إدخال اسمك في نفس مثال التطبيق السابق، يمكن للتطبيق:
- تجهيز UI في الخلفية.
- تخزين الاسم في قاعدة البيانات.
- تنفيذ مهام أخرى أثناء انتظار عرض الرسالة: "مرحبًا (اسمك)".
---مثال واقعي آخر---:
عند إرسال ايمايل، فإنك لا تنتظر الرد الفوري، بل تواصل أداء مهامك الأخرى، فب انتظار الرد على ايمايلك.
---كيف يعمل ال Asynchronous؟
يتم استخدام ما يُعرف بـ Threads لتنفيذ مهام متعددة في وقت واحد.
- على سبيل المثال، يمكن للتطبيق إرسال طلب إلى ال server وانتظار الرد في خلفية البرنامج، بينما يواصل معالجة واجهة المستخدم أو تنفيذ مهام أخرى..
فهم هذين المفهومين يساعد بشكل كبير في التعامل مع ال request/response model، مما يؤدي إلى:
- تحسين أداء التطبيقات
- زيادة كفاءتهه في التعامل مع عدد كبير من الطلبات أو المهام المتزامنة.
- تقديم تجربة مستخدم أفضل في التطبيقات الحديثة
- جعلك مطوى برمجيات افضل.
## لو أفادك المقال انشره و ادعو لنا بالمغفرة و الصحة و العلم النافع والعمل الصالح، لا حاجة لذكري اسمي في نشره 😊
#BackendEngineering #Backend #برمجة #تعلم_مستمر #تعلم
❤5👏4
مجرد تغيير بسيط في إعدادات الاتصال بقاعدة البيانات يمكنه تحسين أداء تطبيقك بشكل كبير في التطبيقات المبنية على ال PHP؟
PDO::ATTR_PERSISTENT => true
تعني أن PHP تستخدم persistent connections.
ما هي persistent connection؟
في الاتصال العادي بقاعدة البيانات: كل مرة يتم تشغيل سكريبت الإتصال يتم فتح اتصال جديد مع قاعدة البيانات وبعد الانتهاء يتم غلقه.
يعني:
Open-->operate-->close
في الاتصال المستمر (persistent connection): ال PHP تحتفظ بالاتصال مفتوح حتى بعد انتهاء السكريبت. وعند الحاجة، تعيد استخدام نفس الاتصال بدلاً من فتح اتصال جديد.
أهمية او مبتغى إستخدامها: بدون persistent connection يتم فتح وغلق الاتصال في كل مرة وهذا يستهلك وقت وموارد أكثر.. Cpu...
باستخدام persistent connection يتم إعادة استخدام الاتصال المفتوح مما يجعل التطبيق أسرع خصوصاً مع عدد مستخدمين أكبر.
ملاحظة مهمة:
إستخدام هذه الميزة في التطبيقات فقط يحافظ على الاتصال بقاعدة البيانات و لا يخزن معلومات ال query التي تتصل بقاعدة البيانات.
يمكنك أيضا استخدام هذه الميزة في الفريمووركس المبنية على ال php ايضا.
ضبط إعدادات الاتصال بشكل ذكي يساهم كثيرًا في تسريع التطبيقات وتقليل استهلاك الموارد،، و هذا يقودنا ايضا الى اهميات فهم و استخدام أساسيات لغات البرمجة التي نستخدمها كمبرمجين و مهندسي برمجيات،، فبفهم و تطبيق بسيطين لمفهوم ما قد تفيد نفسك و شركتك في العديد من الجوانب.
اللهم علمنا و انفعنا بما علمتنا.
#PHP #backendengineering
PDO::ATTR_PERSISTENT => true
تعني أن PHP تستخدم persistent connections.
ما هي persistent connection؟
في الاتصال العادي بقاعدة البيانات: كل مرة يتم تشغيل سكريبت الإتصال يتم فتح اتصال جديد مع قاعدة البيانات وبعد الانتهاء يتم غلقه.
يعني:
Open-->operate-->close
في الاتصال المستمر (persistent connection): ال PHP تحتفظ بالاتصال مفتوح حتى بعد انتهاء السكريبت. وعند الحاجة، تعيد استخدام نفس الاتصال بدلاً من فتح اتصال جديد.
أهمية او مبتغى إستخدامها: بدون persistent connection يتم فتح وغلق الاتصال في كل مرة وهذا يستهلك وقت وموارد أكثر.. Cpu...
باستخدام persistent connection يتم إعادة استخدام الاتصال المفتوح مما يجعل التطبيق أسرع خصوصاً مع عدد مستخدمين أكبر.
ملاحظة مهمة:
إستخدام هذه الميزة في التطبيقات فقط يحافظ على الاتصال بقاعدة البيانات و لا يخزن معلومات ال query التي تتصل بقاعدة البيانات.
يمكنك أيضا استخدام هذه الميزة في الفريمووركس المبنية على ال php ايضا.
ضبط إعدادات الاتصال بشكل ذكي يساهم كثيرًا في تسريع التطبيقات وتقليل استهلاك الموارد،، و هذا يقودنا ايضا الى اهميات فهم و استخدام أساسيات لغات البرمجة التي نستخدمها كمبرمجين و مهندسي برمجيات،، فبفهم و تطبيق بسيطين لمفهوم ما قد تفيد نفسك و شركتك في العديد من الجوانب.
اللهم علمنا و انفعنا بما علمتنا.
#PHP #backendengineering