Editor PHP Xinyi hari ini memperkenalkan kepada anda alat yang dipanggil "http client: lebih cepat tamat masa apabila tiada rangkaian". Dalam persekitaran yang tidak stabil atau bukan rangkaian, tamat masa yang lama boleh mengakibatkan pengalaman pengguna yang lemah. Alat klien http ini boleh membantu menyelesaikan masalah ini Ia mengoptimumkan mekanisme tamat masa untuk membuat tamat masa lebih cepat apabila tiada rangkaian, sekali gus meningkatkan kelajuan tindak balas aplikasi dan pengalaman pengguna. Mari kita lihat fungsi khusus dan penggunaan alat ini!
Apabila membuat permintaan http get in go, walaupun tiada sambungan rangkaian, ia akan menunggu tamat masa penuh sebelum mengembalikan ralat.
Saya rasa secara dalaman ia tahu ia gagal dengan cepat; Saya mahu ralat itu disebarkan secepat mungkin daripada menunggu tamat masa. Saya mahu ia mencuba selama 20 saat semasa rangkaian ada tetapi perlahan. Bagaimanakah saya boleh menyediakan pelanggan dengan tingkah laku ini?
Lihat kod masalah:
var client = &http.Client{ Timeout: time.Second * 20, } response, err := client.Get(url)
Jika ia penting, saya menggunakan gomobile dan ia berjalan pada emulator ios.
Jawapan di sini sangat mudah: secara dalaman golang boleh dan memang tahu apabila tiada rangkaian, dan menyebarkan kegagalan dengan segera tanpa menunggu tamat masa 20 saat. Tiada apa-apa dihantar melalui rangkaian dan tiada menunggu. Semuanya nampaknya berfungsi dengan baik dalam Go dan tiada perubahan pada kod sampel diperlukan.
Isu ini masih berulang, tetapi hanya dalam simulator iOS. Ini nampaknya merupakan isu khusus tentang cara simulator iOS memetakan sambungan ke sistem pengendalian hos. Tidak pasti sama ada ini isu lama atau isu sekali sahaja dengan gandingan MacOS/emulator saya. Pada hos MacOS dan peranti iOS sebenar ia berfungsi dengan baik, apabila tiada antara muka rangkaian ia tamat serta-merta.
Tiada permintaan tambahan diperlukan kerana ini hanyalah satu lagi laluan ke kesimpulan yang sama, yang meningkatkan kemungkinan kegagalan lain. Mungkin membantu membezakan masalah rangkaian daripada masalah dengan perkhidmatan tertentu, atau mendapatkan penunjuk status rangkaian sebenar yang lebih pantas (selepas antara muka rangkaian yang disambungkan wujud).
Atas ialah kandungan terperinci Pelanggan http: tamat masa lebih cepat apabila tiada rangkaian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!