请注意,请求池会尝试并行发送所有请求,因此他们当然无法知道尚未收到的 cookie。例如:
<?php
$url = "http://dev.iworks.at/ext-http/.cookie.php";
function cc($a) { return array_map("current", array_map("current", $a)); }
$single_req = new HttpRequest($url);
printf("1st single request cookies:\n");
$single_req->send();
print_r(cc($single_req->getResponseCookies()));
printf("waiting 1 second...\n");
sleep(1);
printf("2nd single request cookies:\n");
$single_req->send();
print_r(cc($single_req->getResponseCookies()));
printf("1st pooled request cookies:\n");
$pooled_req = new HttpRequestPool(new HttpRequest($url), new HttpRequest($url));
$pooled_req->send();
foreach ($pooled_req as $req) {
print_r(cc($req->getResponseCookies()));
}
printf("waiting 1 second...\n");
sleep(1);
printf("2nd pooled request cookies:\n");
$pooled_req = new HttpRequestPool(new HttpRequest($url), new HttpRequest($url));
$pooled_req->send();
foreach ($pooled_req as $req) {
print_r(cc($req->getResponseCookies()));
}
printf("waiting 1 second...\n");
sleep(1);
printf("now creating a request datashare\n");
$pooled_req = new HttpRequestPool(new HttpRequest($url), new HttpRequest($url));
$s = new HttpRequestDataShare();
$s->cookie = true;
foreach ($pooled_req as $req) {
$s->attach($req);
}
printf("1st pooled request cookies:\n");
$pooled_req->send();
foreach ($pooled_req as $req) {
print_r(cc($req->getResponseCookies()));
}
printf("waiting 1 second...\n");
sleep(1);
printf("2nd pooled request cookies:\n");
$pooled_req->send();
foreach ($pooled_req as $req) {
print_r(cc($req->getResponseCookies()));
}