يجب أن تُرجع دوال معاودة الكتابة في PHP cURL عدد البايتات المعالَجة
احترم عقد عدد البايتات عند استهلاك أجزاء استجابة الوسيط، وميّز فشل الكتابة المحلي من فشل اتصال الوسيط.
الوسيط يوصّل البيانات. دالة معاودة الكتابة لديك تُرجع قيمة خاطئة. عندئذٍ يتوقف libcurl، ويُبلّغ الكود المحيط بفشل آخر هو «فشل تنزيل عبر الوسيط».
يجب أن تُبلّغ المعاودة عن عدد البايتات المستلَمة التي عالجتها فعلاً. إرجاع عدد مختلف يعني الفشل. بالنسبة إلى مستقبِل كتابة يحجب عن قصد، قد يبدو المقطع هكذا:
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:8080');
curl_setopt($handle, CURLOPT_WRITEFUNCTION,
function ($handle, $chunk) use ($sink) {
$written = fwrite($sink, $chunk);
return $written === false ? 0 : $written;
}
);يفترض هذا أن التطبيق القائم يملك المقبض والمستقبِل القابل للكتابة. الكتابة الفاشلة أو القصيرة تتوقف بدل أن تدّعي بصمت أن المقطع كله قد حُفظ. المستقبِل غير الحاجب يحتاج إلى تصميم مناسب للتخزين المؤقت والإيقاف والاستئناف؛ والمقطع الصغير لا يوفّر ذلك.
عُدّ البايتات لا المحارف المعروضة. قد تكون البيانات ثنائية أو جزءاً من تسلسل نصي متعدد البايتات. المعاودة الواحدة ليست بالضرورة سطراً واحداً أو مستند JSON أو رسالة واحدة من الخدمة.
يحتاج التحليل التدريجي إلى حالته الخاصة بين المعاودات. وعلى العكس، قد يكون تجميع كل مقطع حتى الاكتمال صحيحاً لاستجابة صغيرة محدودة، لكنه ليس سياسة ذاكرة لتدفق كبير أو لا نهائي.
احفظ نتيجة النقل وأدلة فشل المعاودة. قد يحدث خطأ على القرص المحلي أو توقف المحلل بعد إنشاء مسار وسيط صالح. إذا كنت تنوي التوقف بعد بادئة، فميِّز ذلك التوقف المتعمد للمعاودة على حدة. واستبدال عنوان الوسيط لا يمكنه إصلاح مستقبِل توقف عن قبول البيانات.