adjust request example. and fix read_start_cb. it might called mutiple times.

This commit is contained in:
Shuhei Tanuma 2012-06-04 00:37:45 +09:00
parent 4bb3eea336
commit a241a55602
2 changed files with 32 additions and 14 deletions

View File

@ -1,23 +1,40 @@
<?php
$tcp = uv_tcp_init();
$address = uv_ip4_addr("173.194.38.65","80");
uv_tcp_connect($tcp, $address, function($stat, $client){
$url = "http://yahoo.co.jp/";
$parts = parse_url($url);
$domain = $parts['host'];
$path = $parts['path'] . '?' . $parts['query'];
$uv = uv_ares_init_options(uv_default_loop(), array(
"servers" => array(
"8.8.8.8"
),
"port"=>53
),null);
ares_gethostbyname($uv,$domain, AF_INET, function($name, $addr) use ($path, $host){
$a = array_shift($addr);
$address = uv_ip4_addr($a,"80");
$tcp = uv_tcp_init();
uv_tcp_connect($tcp, $address, function($stat, $client) use ($path, $host){
$request = <<<EOF
GET / HTTP/1.0
Host: google.com
GET {$path} HTTP/1.0
Host: {$host}
EOF;
uv_write($client,$request,function($stat, $client){
if ($stat == 0) {
uv_read_start($client,function($buffer, $client){
var_dump($buffer);
uv_write($client,$request,function($stat, $client){
if ($stat == 0) {
uv_read_start($client,function($buffer, $client){
var_dump($buffer);
//uv_close($client);
});
} else {
uv_close($client);
});
} else {
uv_close($client);
}
}
});
});
});

View File

@ -413,7 +413,7 @@ static void php_uv_read_cb(uv_stream_t* handle, ssize_t nread, uv_buf_t buf)
/* Error or EOF */
assert(uv_last_error(uv_default_loop()).code == UV_EOF);
if (buf.base) {
efree(buf.base);
}
@ -445,6 +445,7 @@ static void php_uv_read_cb(uv_stream_t* handle, ssize_t nread, uv_buf_t buf)
php_uv_do_callback(&retval_ptr, uv->read_cb, params, 2 TSRMLS_CC);
zval_ptr_dtor(&buffer);
Z_TYPE_P(rsc) = IS_NULL;
zval_ptr_dtor(&rsc);
zval_ptr_dtor(&retval_ptr);