Ṣé a gé ìdáhùn cURL PHP kúrú?
Ṣàyẹ̀wò àbájáde gbígbékalẹ̀ cURL, ipò ìdáhùn àti ìṣàfihàn ara kí o tó fi ìwọ̀n tí a gbà sílẹ̀ wé Content-Length.
Bẹ̀rẹ̀ pẹ̀lú àbájáde cURL nígbà tí ojú-ìwé tí a gbà wá nípasẹ̀ proxy bá dàbí ẹni tí kò pé. Ìdáhùn kúkúrú, gbígbékalẹ̀ tí ó kùnà àti ojú-ìwé ìdènà pípé nílò àwọn àlàyé ọ̀tọ̀ọ̀tọ̀.
Nígbà tí CURLOPT_RETURNTRANSFER bá ṣiṣẹ́ lórí handle tí a ti ṣètò:
$body = curl_exec($ch);
if ($body === false) {
throw new RuntimeException(curl_error($ch), curl_errno($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$downloaded = curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD_T);
$declared = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T);
Kó àwọn iye wọ̀nyí jọ kí o tó tú handle sílẹ̀. Ìfiwéra tí ó le yàtọ̀ ìkùnà gbígbékalẹ̀ sí ara tí ó yọrísí rere bíì okùn òfo tàbí “0”. Àwọn ipò àṣìṣe HTTP kì í ṣe ìkùnà curl_exec lọ́nà aládàáṣiṣẹ́, nítorí náà túmọ̀ ipò náà pẹ̀lú.
Àwọn iye tí a ti gbà sílẹ̀ kò ní àwọn àkọlé. Iye tí a kéde wá láti Content-Length ó sì jẹ́ -1 nígbà tí a kò mọ ìwọ̀n náà. Ìdáhùn lè fi Content-Length kù lọ́nà tí ó tọ́; iye tí a kò mọ kì í ṣe ìdámọ̀ fáìlì tí a gé kúrú.
Yíyọ kóòdù àkóónú lọ́nà aládàáṣiṣẹ́ ń mú ìyàtọ̀ mìíràn wá. Content-Length sábà máa ń ṣàpèjúwe ìṣàfihàn tí a ti rọ̀, nígbà tí okùn PHP lè ní àwọn byte tí a ti yọ. Fífi strlen($body) wé àkọlé yẹn ń fi àwọn ìṣàfihàn tí ó yàtọ̀ wé ara wọn.
cURL lè jábọ̀ CURLE_PARTIAL_FILE nígbà tí gbígbékalẹ̀ bá ta kò ìwọ̀n tí a retí. Pa àṣìṣe yẹn mọ́ dípò kí o ka èyíkéyìí jáde tí kò ṣofo sí àṣeyọrí. Ní òdìkejì, gbígbékalẹ̀ tí ó yọrísí rere pẹ̀lú ìdáhùn 200 kékeré lè jẹ́ gbogbo ojú-ìwé tí orísun tàbí proxy yàn láti dá padà.
Níkẹyìn ṣàyẹ̀wò àkóónú tí ó pọn dandan. HTML tí cURL ń mú wá kì í ṣe JavaScript láti kún ojú-ìwé. Àwọn apá tí aṣàwákiri ń fi hàn lè máà sí nínú ìdáhùn ìpilẹ̀ pẹ̀lú bí gbogbo byte tí a fi ránṣẹ́ bá ti dé.