Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah saya Mendapat \'ralat keriting 18 - pemindahan ditutup dengan baki data bacaan tertunggak\' dan Bagaimana Saya Boleh Membetulkannya?
Apabila mendapatkan semula data daripada pelayan jauh melalui alat baris arahan curl, anda mungkin menghadapi mesej ralat "ralat curl 18 - pemindahan ditutup dengan baki data bacaan tertunggak." Ralat ini menunjukkan bahawa percubaan untuk mendapatkan semula data daripada URL telah terganggu sebelum keseluruhan respons diterima, mengakibatkan data separa atau hilang.
Lazimnya, ralat ini dihadapi apabila CURLOPT_RETURNTRANSFER ditetapkan kepada benar, menunjukkan bahawa fungsi curl_exec harus mengembalikan data yang diambil daripada URL. Walau bagaimanapun, melumpuhkan CURLOPT_RETURNTRANSFER dengan menetapkannya kepada palsu membenarkan data yang diambil dipaparkan secara terus, mengelakkan ralat.
Apa yang Menyebabkan Ralat?
Ralat ini berlaku disebabkan oleh penggunaan pengekodan chunked dalam tindak balas HTTP. Pengekodan terpotong membenarkan pelayan menghantar data dalam berbilang ketulan, dengan setiap ketul ditamatkan oleh jujukan aksara yang ditentukan.
Apabila sambungan ditutup sebelum semua ketulan diterima, libcurl menyedari bahawa ketulan terakhir diterima tidak lengkap dan menjana mesej ralat.
Menyelesaikan Isu
Terdapat dua cara utama untuk menangani isu ini:
1. Lumpuhkan Pengekodan Potongan:
Anda boleh cuba mengeluarkan permintaan HTTP 1.0 sebaliknya dengan menambah pilihan -0 pada arahan curl. HTTP 1.0 tidak menggunakan pengekodan chunked, jadi penyelesaian ini boleh menyelesaikan ralat.
2. Periksa Konfigurasi Pelayan dan Rangkaian:
Ralat mungkin menunjukkan masalah dengan pelayan atau sambungan rangkaian. Adalah disyorkan untuk menyemak perkara berikut:
Atas ialah kandungan terperinci Mengapakah saya Mendapat \'ralat keriting 18 - pemindahan ditutup dengan baki data bacaan tertunggak\' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!