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;
}
);ეს ვარაუდობს, რომ არსებული აპლიკაცია ფლობს handle-ს და ჩაწერის მიმღებს. წარუმატებელი ან მოკლე ჩაწერა წყვეტს, ნაცვლად იმისა, რომ ჩუმად განაცხადოს, თითქოს მთელი ფრაგმენტი შენახულია. არაბლოკირებად მიმღებს სჭირდება შესაბამისი ბუფერიზაციის და პაუზა/განახლების დიზაინი; პატარა ფრაგმენტი ამას არ იძლევა.
დაითვალეთ ბაიტები და არა ნაჩვენები სიმბოლოები. მონაცემები შეიძლება იყოს ორობითი ან მრავალბაიტიანი ტექსტური მიმდევრობის ნაწილი. ერთი ქოლბექი სულაც არ არის ერთი სტრიქონი, ერთი JSON დოკუმენტი ან სერვისის ერთი შეტყობინება.
ინკრემენტულ გარჩევას სჭირდება საკუთარი მდგომარეობა ქოლბექებს შორის. პირიქით, ყოველი ფრაგმენტის დაგროვება დასრულებამდე შეიძლება სწორი იყოს პატარა შეზღუდული პასუხისთვის, მაგრამ ეს არ არის მეხსიერების პოლიტიკა დიდი ან უსასრულო ნაკადისთვის.
შეინახეთ გადაცემის შედეგი და ქოლბექის ჩავარდნის მტკიცებულება. ლოკალური დისკის შეცდომა ან პარსერის შეწყვეტა შეიძლება მოხდეს ვალიდური პროქსი-მარშრუტის დამყარების შემდეგ. თუ აპირებთ პრეფიქსის შემდეგ გაჩერებას, მონიშნეთ ეს განზრახ ქოლბექ-გაჩერება ცალკე. პროქსის მისამართის შეცვლა ვერ შეაკეთებს მიმღებს, რომელმაც მონაცემების მიღება შეწყვიტა.