Alohida foydalanuvchi seanslari uchun PHP cURL cookie idishlari
PHP cURL cookie saqlanishini masofaviy seans atrofida loyihalash: ishonchli fayl nomlari, aniq saqlash va parallel so'rovlar.
PHP ilovasi Alice va Bobga xizmat qiladi, ikkalasi ham proksi orqali bir xil masofaviy veb-saytga yetib borish uchun uning server tomonidagi cURL mijozi-dan foydalanadi. Agar har bir so'rov cookies.txt ni yuklasa, ikki foydalanuvchi bir xil masofaviy kirishni meros qilib olishi mumkin. Ularning proksi manzillarini o'zgartirish bu faylni ajratmaydi.
Fayl nomini tanlashdan oldin cookie egasini tanlang. Odatda bu ilovaning mantiqiy masofaviy seansi: mahalliy foydalanuvchi, muayyan masofaviy hisob va kerak bo'lganda alohida ish maydoni. Proksi oxirgi nuqtasi — yo'naltirish tanlovi, ishonchli seans identifikatori emas. Bir nechta foydalanuvchi bitta oxirgi nuqtani baham ko'rishi mumkin, oxirgi nuqta esa chiqishlarni almashtirishi mumkin.
Bir xil seansning idishini yuklang va saqlang
Ilova o'zining autentifikatsiya qilingan seansini server yaratgan fayl kalitiga bog'lasin. Shaxsiy cookie katalogi va ishonchli $sessionKey bilan cURL konfiguratsiyasi quyidagi shaklga ega:
$jar = $cookieDirectory . '/' . $sessionKey . '.cookies';
$ch = curl_init('https://service.example.net/account');
curl_setopt_array($ch, [
CURLOPT_PROXY => 'http://proxy.example.net:8080',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_COOKIEFILE => $jar,
CURLOPT_COOKIEJAR => $jar,
]);
Ommaviy vositachiga ruxsat beruvchi tarmoqda ruxsat etilgan ommaviy sayt seansi sinovi uchun HTTP proksilar ro'yxati nomzod oxirgi nuqtalarni taqdim etadi. Sozlangan proksi autentifikatsiyasi yoki saqlangan proksi hisob ma'lumotlarisiz tutqichdan foydalaning va cookie holatini uning mo'ljallangan seansiga biriktirilgan holda saqlang. Bu parcha tutqichni sozlaydi; ilova uzatishni amalga oshiradi va natijani odatdagi so'rov oqimi orqali tekshiradi. COOKIEFILE seansning oldingi cookie fayllarini yuklaydi. COOKIEJAR tutqich saqlangan cookie fayllarini qayerga yozishini tanlaydi. Faqat chiqish faylini sozlash oldingi kirishni yuklamaydi.
Yangi seans faylsiz boshlanishi mumkin. Uning birinchi uzatishiga mo'ljallangan idish yo'lini bering, veb-sayt cookie fayllarini o'rnatishiga ruxsat bering va hosil bo'lgan holatni keyingi so'rov uchun saqlang. Cookie katalogi ilovaning ishchisi tomonidan yoziladigan bo'lishi va ommaviy xizmat ko'rsatiladigan hujjatlar daraxtidan tashqarida saqlanishi kerak. Tashrif buyuruvchi bergan foydalanuvchi nomi yoki yo'lni fayl nomiga aylantirmang; ishonchli kalitni serverdan qidiring.
Saqlash so'rov hayot tsiklida joy talab qiladi
libcurl odatda idishni tutqichni tozalash paytida yozadi. Agar ilovaga masofaviy almashinuvdan keyin aniq saqlash nuqtasi kerak bo'lsa, u quyidagini so'rashi mumkin:
curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');
Bu tutqichga hozir ma'lum bo'lgan cookie fayllarini uning sozlangan idishiga yozadi. Tutqichdan o'sha seans uchun foydalanishni tugating, so'ng uni bog'liq bo'lmagan ishga tayinlang. Alice ning cookie fayllarini allaqachon saqlayotgan tutqichda faqat idish yo'lini o'zgartirish Bob ning toza seansini yaratishga teng emas.
Shuningdek muvaffaqiyatli yuklab olishni muvaffaqiyatli saqlashdan ajrating. Cookie idishi hujjati tozalash paytidagi yozish xatosi oddiy uzatish xatosi sifatida qaytarilmasligini qayd etadi. Kirish bitta so'rov uchun ishlab, keyingisida yo'qolsa, katalog egaligi, ruxsatlar va ilovaning diagnostik chiqishini tekshiring.
Parallel so'rovlar yana bir chegarani kiritadi. Ikki ishchi bir xil eski idishni yuklashi, o'z xotirasidagi holatini mustaqil o'zgartirishi va keyin turli natijalarni saqlashi mumkin. Agar ikkala so'rov bitta masofaviy kirishni baham ko'rsa, seans bo'yicha qulf yoki ekvivalent ketma-ketlashtirish butun yuklash, almashinuv va saqlash ketma-ketligini qamrab olishi kerak; faqat oxirgi yozishni qulflash ularning oldingi suratlarini moslashtirmaydi. Turli seanslar turli fayllar va mustaqil qulflarga ega bo'lishi kerak.
Chiqishda mo'ljallangan masofaviy seansni tugating va uning mahalliy cookie holatini ilova siyosatiga muvofiq bekor qiling. Yangi tanlangan proksi keyin foydalanuvchi boshlagan har qanday yangi seansga ulanishi mumkin, proksi manzili xotirada kimning kirishi borligini hal qilishga majbur bo'lmaydi.