Callback tulis cURL boleh menyimpan awalan badan yang terhad dan menghentikan pemindahan sebaik sahaja had itu dicapai. Gunakan bendera anda sendiri untuk membezakan hentian yang disengajakan itu daripada kegagalan tulis yang lain.

Untuk handle baharu yang URL sasarannya sudah dikonfigurasikan:

$limit = 32768;
$prefix = '';
$limitReached = false;

curl_setopt_array($ch, [
    CURLOPT_PROXY => 'socks5h://proxy.example.net:1080',
    CURLOPT_HEADER => false,
    CURLOPT_WRITEFUNCTION => function ($handle, $chunk)
        use (&$prefix, &$limitReached, $limit) {
        $remaining = $limit - strlen($prefix);
        $prefix .= substr($chunk, 0, $remaining);

        if (strlen($prefix) >= $limit) {
            $limitReached = true;
            return 0;
        }

        return strlen($chunk);
    },
]);

$result = curl_exec($ch);
$error = curl_errno($ch);

$expectedStop = $limitReached && $error === CURLE_WRITE_ERROR;
if ($result === false && !$expectedStop) {
    throw new RuntimeException(curl_error($ch), $error);
}

Skema socks5h pada URL proksi meminta proksi menyelesaikan nama hos sasaran. Untuk ujian yang dibenarkan ke atas sasaran awam pada handle baharu yang ditunjukkan, entri tanpa akaun daripada senarai proksi SOCKS5 boleh menyediakan endpoint itu. Pengesahan sijil TLS kekal pada tetapan biasa.

Memulangkan sifar untuk ketulan yang tidak kosong memberitahu libcurl bahawa callback tidak menerima data yang diberikan. Ia terhenti dengan CURLE_WRITE_ERROR. Di sini hanya gabungan ralat itu dan bendera limitReached callback dianggap dijangka.

Respons yang lebih pendek daripada had tamat seperti biasa. Pada atau melebihi had, prefix menyimpan paling banyak 32 KiB walaupun callback terakhir menerima ketulan yang lebih besar. Saiz ketulan berbeza-beza; saiz penimbal yang diminta bukan janji panggilan panjang tetap.

Ini mengehadkan badan yang disimpan, bukan setiap bait yang sudah dibuffer atau dipindahkan pada sambungan. Awalan itu mungkin tamat di tengah aksara berbilang bait, nilai JSON atau elemen HTML, jadi jangan anggap ia dokumen lengkap yang boleh dihuraikan.

Artikel berkaitan