PHP cURL-skryf-terugroepe moet die aantal verwerkte grepe terugstuur
Respekteer die grepe-telling-kontrak wanneer jy proxy-responsstukkies verwerk, en onderskei 'n plaaslike skryffout van 'n mislukte proxyverbinding.
Die proxy lewer data. Jou skryf-terugroep gee die verkeerde waarde terug. libcurl staak dan, en die omliggende kode rapporteer nog 'n “proxy-aflaai-mislukking”.
Die terugroep moet rapporteer hoeveel ontvangde grepe dit werklik verwerk het. Om 'n ander telling terug te gee, dui op 'n fout. Vir 'n doelbewus blokkerende skryfbare sink kan 'n fragment so lyk:
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;
}
);Dit veronderstel dat die bestaande toepassing die handvatsel en die skryfbare sink besit. 'n Mislukte of kort skryf staak eerder as om stilweg te beweer die hele stuk is gestoor. 'n Nie-blokkerende sink benodig 'n gepaste buffer- en pouse/hervat-ontwerp; die klein fragment voorsien nie een nie.
Tel grepe, nie vertoonde karakters nie. Die data kan binêr wees of deel van 'n multi-greep teksreeks. Een terugroep is nie noodwendig een reël, 'n JSON-dokument of 'n boodskap van die diens nie.
Inkrementele ontleding het sy eie toestand oor terugroepe nodig. Omgekeerd kan die versameling van elke stuk tot voltooiing korrek wees vir 'n klein begrensde respons, maar dit is nie 'n geheuebeleid vir 'n groot of eindelose stroom nie.
Hou die oordragresultaat en die getuienis van terugroepfoute. 'n Plaaslike skyffout of ontleder-staking kan plaasvind nadat 'n geldige proxyroete gevestig is. As jy van plan is om na 'n voorvoegsel te stop, merk daardie doelbewuste terugroepstop afsonderlik. Om die proxy-adres te vervang kan nie 'n sink herstel wat opgehou het om data te aanvaar nie.