Funksionet e kthimit të shkrimit në PHP cURL duhet të kthejnë numrin e bajtëve të trajtuar
Respektoni kontratën e numërimit të bajtëve kur konsumoni pjesë të përgjigjes së proxy-t dhe dalloni një dështim lokal shkrimi nga një lidhje proxy e dështuar.
Proxy-i dorëzon të dhëna. Funksioni juaj i shkrimit kthen vlerën e gabuar. Më pas libcurl ndërpret, dhe kodi përreth raporton një “dështim tjetër shkarkimi përmes proxy-t”.
Funksioni duhet të raportojë sa bajtë të marrë trajtoi në të vërtetë. Kthimi i një numri tjetër sinjalizon dështim. Për një destinacion shkrimi që bllokon qëllimisht, një fragment mund të duket kështu:
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;
}
);Kjo supozon se aplikacioni ekzistues zotëron handle-in dhe destinacionin e shkrimit. Një shkrim i dështuar ose i shkurtër ndërpret në vend që të pohojë në heshtje se i gjithë fragmenti u ruajt. Një destinacion jo-bllokues kërkon një dizajn të përshtatshëm buferimi dhe pauze/rimarrjeje; fragmenti i vogël nuk e ofron atë.
Numëroni bajtë, jo karaktere të shfaqura. Të dhënat mund të jenë binare ose pjesë e një sekuence teksti shumëbajtëshe. Një thirrje nuk është domosdoshmërisht një rresht, një dokument JSON ose një mesazh nga shërbimi.
Analiza incrementale kërkon gjendjen e vet midis thirrjeve. Në të kundërt, grumbullimi i çdo fragmenti deri në përfundim mund të jetë i saktë për një përgjigje të vogël të kufizuar, por nuk është politikë memorieje për një rrjedhë të madhe ose pa fund.
Ruani rezultatin e transferimit dhe provat e dështimit të thirrjes. Një gabim lokal disku ose ndërprerje e analizuesit mund të ndodhë pasi të jetë vendosur një rrugë e vlefshme proxy. Nëse synoni të ndaleni pas një prefiksi, shënoni veçmas atë ndalesë të qëllimshme të thirrjes. Zëvendësimi i adresës së proxy-t nuk mund të riparojë një destinacion që ndaloi së pranuari të dhëna.