مصطفى اوريك نشر 30 أغسطس أرسل تقرير نشر 30 أغسطس السلام عليكم أريد أن أتعلم كيفية استخدام Fibers في لغة PHP لذلك قمت بإنشاء تطبيق بسيط يُفترض به أن يقوم بجلب البيانات من رابط API وهو كالتالي: $fiber = new Fiber(function () { $curl = curl_init("https://jsonplaceholder.typicode.com/todos/1"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); Fiber::suspend(curl_exec($curl)); }); echo "1" . "<br>"; $fiber->start(); echo "2" . "<br>"; $response = $fiber->resume(); echo $response . "<br>"; echo "3"; لكنه لم يعمل, فأين الخلل؟ 1 اقتباس
0 Mustafa Suleiman نشر 31 أغسطس أرسل تقرير نشر 31 أغسطس بسبب أنك تقوم بتعليق الـ Fiber باستخدام Fiber::suspend(curl_exec($curl)). المشكلة هنا أن curl_exec غير متوافقة مع الـ Fibers، أي عند استدعاء curl_exec، فيتم محاولة تنفيذ الطلب بالكامل بشكل متزامن، مما يؤدي إلى حظر الـ Fiber وعدم استئنافها. بالتالي، لا يتم الوصول إلى $fiber->resume() أبدًا، ولا يتم طباعة الاستجابة. الصحيح هو التالي: <?php $fiber = new Fiber(function () { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://jsonplaceholder.typicode.com/todos/1'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); print_r($data); }); $fiber->start(); لاحظ تنفيذ curl_exec بالكامل داخل الـ Fiber، ثم فك تشفير JSON وطباعة البيانات قبل انتهاء الـ Fiber. اقتباس
السؤال
مصطفى اوريك
السلام عليكم
أريد أن أتعلم كيفية استخدام Fibers في لغة PHP لذلك قمت بإنشاء تطبيق بسيط يُفترض به أن يقوم بجلب البيانات من رابط API وهو كالتالي:
لكنه لم يعمل, فأين الخلل؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.