mirror of
https://github.com/danog/ext-uv.git
synced 2024-11-27 04:24:45 +01:00
f0d8db93ed
some libuv functions requires threading feature. you have to re-compile your PHPwith --enable-maintainer-zts if you want to use threading functions. NOTE: thread feature runs new php vm another thread. current implementation doesn't copy current executor globals. so you have to load bootstrap file (like composer's autoloader) manually.
2992 lines
43 KiB
Markdown
2992 lines
43 KiB
Markdown
# php-uv
|
|
|
|
[![Build Status](https://secure.travis-ci.org/chobie/php-uv.png)](http://travis-ci.org/chobie/php-uv)
|
|
|
|
interface to libuv for php (experimental). also supports http-parser.
|
|
|
|
# Experimental
|
|
|
|
This extension is experimental, its functions may change their names
|
|
or move to extension all together so do not rely to much on them you have been warned!
|
|
|
|
# Install
|
|
|
|
````
|
|
git clone https://github.com/chobie/php-uv.git --recursive
|
|
cd php-uv
|
|
make -C libuv
|
|
# Note: please use `make -C libuv CFLAGS=-fPIC` instead of `make` on 64bit box.
|
|
phpize
|
|
./configure
|
|
make
|
|
make install
|
|
# add `extension=uv.so` to your php.ini
|
|
````
|
|
|
|
# Examples
|
|
|
|
see examples and tests directory.
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
|
|
uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',8888));
|
|
|
|
uv_listen($tcp,100, function($server){
|
|
$client = uv_tcp_init();
|
|
uv_accept($server, $client);
|
|
var_dump(uv_tcp_getsockname($server));
|
|
|
|
uv_read_start($client, function($socket, $nread, $buffer){
|
|
var_dump($buffer);
|
|
uv_close($socket);
|
|
});
|
|
});
|
|
|
|
$c = uv_tcp_init();
|
|
uv_tcp_connect($c, uv_ip4_addr('0.0.0.0',8888), function($stream, $stat){
|
|
if ($stat == 0) {
|
|
uv_write($stream,"Hello",function($stream, $stat){
|
|
uv_close($stream);
|
|
});
|
|
}
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
# Community
|
|
|
|
Check out #php-uv on irc.freenode.net.
|
|
|
|
# Author
|
|
|
|
* Shuhei Tanuma
|
|
|
|
# License
|
|
|
|
PHP License
|
|
|
|
|
|
# Documents
|
|
|
|
### void uv_unref(resource $uv_t)
|
|
|
|
##### *Description*
|
|
|
|
decrement reference
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_t*: uv resource handle.
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
uv_unref($tcp);
|
|
|
|
````
|
|
|
|
|
|
|
|
### long uv_last_error([resource $uv_loop])
|
|
|
|
##### *Description*
|
|
|
|
get last error code.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_loop*: uv loop handle
|
|
|
|
##### *Return Value*
|
|
|
|
*long $error_code*: error code
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$err = uv_last_error();
|
|
var_dump($err);
|
|
````
|
|
|
|
|
|
### string uv_err_name(long $error_code)
|
|
|
|
##### *Description*
|
|
|
|
get error code name.
|
|
|
|
##### *Parameters*
|
|
|
|
*long $error_code*: libuv error code
|
|
|
|
##### *Return Value*
|
|
|
|
*string $erorr_name*: error name
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$err = uv_last_error();
|
|
var_dump(uv_err_name($err));
|
|
````
|
|
|
|
|
|
### string uv_strerror(long $error_code)
|
|
|
|
##### *Description*
|
|
|
|
get error message.
|
|
|
|
##### *Parameters*
|
|
|
|
*long $error_code*: libuv error code
|
|
|
|
##### *Return Value*
|
|
|
|
*string $erorr_message*: error message
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$err = uv_last_error();
|
|
var_dump(uv_strerror($err));
|
|
````
|
|
|
|
|
|
|
|
### void uv_update_time(resource $uv_loop)
|
|
|
|
|
|
### void uv_ref(resource $uv_handle)
|
|
|
|
##### *Description*
|
|
|
|
increment reference count
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_handle*: uv resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
uv_ref($tcp);
|
|
````
|
|
|
|
##### *TODO*
|
|
|
|
* support uv_loop resource
|
|
|
|
|
|
|
|
### void uv_run([resource $uv_loop])
|
|
|
|
##### *Description*
|
|
|
|
run event loop
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_loopg*: uv_loop resource
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$loop = uv_default_loop();
|
|
$async = uv_async_init($loop, function($async, $status){
|
|
var_dump(1);
|
|
uv_close($async);
|
|
});
|
|
|
|
uv_async_send($async);
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
|
|
### void uv_run_once([resource $uv_loop])
|
|
|
|
|
|
### void uv_loop_delete(resource $uv_loop)
|
|
|
|
##### *Description*
|
|
|
|
delete specified loop resource.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_loop*: uv_loop resource
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### long uv_now(resource $uv_loop)
|
|
|
|
|
|
### void uv_tcp_bind(resource $uv_tcp, resource $uv_sockaddr)
|
|
|
|
##### *Description*
|
|
|
|
binds a name to a socket.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_tcp*: uv_tcp resource
|
|
|
|
*resource $uv_sockaddr*: uv sockaddr4 resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
|
|
uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',9999));
|
|
|
|
uv_listen($tcp,100, function($server){
|
|
$client = uv_tcp_init();
|
|
uv_accept($server, $client);
|
|
var_dump(uv_tcp_getsockname($server));
|
|
|
|
uv_read_start($client, function($socket, $nread, $buffer) use ($server){
|
|
var_dump($buffer);
|
|
uv_close($socket);
|
|
uv_close($server);
|
|
});
|
|
});
|
|
````
|
|
|
|
|
|
|
|
### void uv_tcp_bind6(resource $uv_tcp, resource $uv_sockaddr)
|
|
|
|
##### *Description*
|
|
|
|
binds a name to a socket.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_tcp*: uv_tcp resource
|
|
|
|
*resource $uv_sockaddr*: uv sockaddr6 resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
uv_tcp_bind6($tcp, uv_ip6_addr('::1',9999));
|
|
|
|
uv_listen($tcp,100, function($server){
|
|
$client = uv_tcp_init();
|
|
uv_accept($server, $client);
|
|
var_dump(uv_tcp_getsockname($server));
|
|
|
|
uv_read_start($client, function($socket, $nread, $buffer) use ($server){
|
|
var_dump($buffer);
|
|
uv_close($socket);
|
|
uv_close($server);
|
|
});
|
|
});
|
|
````
|
|
|
|
|
|
|
|
### void uv_write(resource $handle, string $data, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
send buffer to speicified uv resource.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resources (uv_tcp, uv_udp, uv_pipe ...etc.)
|
|
*string $data*: buffer.
|
|
*callable $callback*: callable variables. this callback expects (resource $handle, long $status)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_write2(resource $handle, string $data, resource $send, callable $callback)
|
|
|
|
|
|
### void uv_tcp_nodelay(resource $handle, bool $enable)
|
|
|
|
##### *Description*
|
|
|
|
set Nagel's flags for specified tcp resource.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: libuv tcp resource
|
|
|
|
*bool $enable*: true means enabled. false means disabled.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
uv_tcp_nodelay($tcp, true);
|
|
````
|
|
|
|
|
|
### void uv_accept(resource $server, resource $client)
|
|
|
|
##### *Description*
|
|
|
|
accepts a connection on a socket.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv*: uv_tcp or uv_pipe server resource
|
|
|
|
*resource $uv*: uv_tcp or uv_pipe client resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
|
|
uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',9999));
|
|
|
|
uv_listen($tcp,100, function($server){
|
|
$client = uv_tcp_init();
|
|
uv_accept($server, $client);
|
|
var_dump(uv_tcp_getsockname($server));
|
|
|
|
uv_read_start($client, function($socket, $nread, $buffer) use ($server){
|
|
var_dump($buffer);
|
|
uv_close($socket);
|
|
uv_close($server);
|
|
});
|
|
});
|
|
````
|
|
|
|
|
|
|
|
### void uv_shutdown(resource $handle, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
shutdown uv handle.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resources (uv_tcp, uv_udp, uv_pipe ...etc.)
|
|
*callable $callback*: callable variables. this callback expects (resource $handle, long $status)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_close(resource $handle, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
close uv handle.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resources (uv_tcp, uv_udp, uv_pipe ...etc.)
|
|
*callable $callback*: callable variables. this callback expects (resource $handle, long $status)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_read_start(resource $handle, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
starts read callback for uv resources.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resources (uv_tcp, uv_udp, uv_pipe ...etc.)
|
|
|
|
*callable $callback*: callable variables. this callback parameter expects (resource $handle, long $nread, string buffer)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
##### *Note*
|
|
|
|
* You have to handle erorrs correctly. otherwise this will leak.
|
|
* if you want to use PHP's stream or socket resource. see uv_fs_poll_init and uv_fs_read.
|
|
|
|
|
|
|
|
### void uv_read2_start(resource $handle, callable $callback)
|
|
|
|
|
|
### void uv_read_stop(resource $handle)
|
|
|
|
##### *Description*
|
|
|
|
stop read callback
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv*: uv resource handle which started uv_read.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
|
|
uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',9999));
|
|
|
|
uv_listen($tcp,100, function($server){
|
|
$client = uv_tcp_init();
|
|
uv_accept($server, $client);
|
|
var_dump(uv_tcp_getsockname($server));
|
|
|
|
uv_read_start($client, function($socket, $nread, $buffer) use ($server){
|
|
uv_read_stop($socket);
|
|
var_dump($buffer);
|
|
uv_close($socket);
|
|
uv_close($server);
|
|
});
|
|
});
|
|
````
|
|
|
|
|
|
|
|
### resource uv_ip4_addr(string $ipv4_addr, long $port)
|
|
|
|
##### *Description*
|
|
|
|
create a ipv4 sockaddr.
|
|
|
|
##### *Parameters*
|
|
|
|
*string $ipv4_addr*: ipv4 address
|
|
|
|
*long $port*: port number.
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $uv_sockaddr*: sockaddr resource
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$sockaddr = uv_ip4_addr("127.0.0.1", 8080);
|
|
````
|
|
|
|
##### *Todo*
|
|
|
|
* check passed ip address is valid.
|
|
* check port number is valid
|
|
|
|
|
|
|
|
### resource uv_ip6_addr(string $ipv6_addr, long $port)
|
|
|
|
##### *Description*
|
|
|
|
create a ipv6 sockaddr.
|
|
|
|
##### *Parameters*
|
|
|
|
*string $ipv6_addr*: ipv6 address
|
|
|
|
*long $port*: port number.
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $uv_sockaddr*: sockaddr resource
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$sockaddr = uv_ip6_addr("::1", 8080);
|
|
````
|
|
|
|
##### *Todo*
|
|
|
|
* check passed ip address is valid.
|
|
* check port number is valid
|
|
|
|
|
|
|
|
### void uv_listen(resource $handle, long $backlog, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
listens for a connection on a uv handle.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (tcp, udp and pipe)
|
|
|
|
*long $backlog*: backlog
|
|
|
|
*callable $callback*: this callback parameter expects (resource $connection, long $status)
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
|
|
uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',9999));
|
|
|
|
uv_listen($tcp,100, function($server, $status){
|
|
$client = uv_tcp_init();
|
|
uv_accept($server, $client);
|
|
uv_read_start($client, function($socket, $nread, $buffer) use ($server){
|
|
var_dump($buffer);
|
|
uv_close($socket);
|
|
uv_close($server);
|
|
});
|
|
});
|
|
uv_run();
|
|
|
|
````
|
|
|
|
|
|
|
|
### void uv_tcp_connect(resource $handle, resource $ipv4_addr, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
connect to specified ip address and port.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: requires `uv_tcp_init()` resource.
|
|
*resource $ipv4_addr*: requires uv_sockaddr resource.
|
|
*callable $callback*: callable variables.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
uv_tcp_connect($tcp, uv_ip4_addr("127.0.0.1",8080), function($tcp_handle, $status){
|
|
uv_close($tcp_handle);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
### void uv_tcp_connect6(resource $handle, resource $ipv6_addr, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
connect to specified ip address and port.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: requires `uv_tcp_init()` resource.
|
|
*resource $ipv4_addr*: requires uv_sockaddr resource.
|
|
*callable $callback*: callable variables.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
uv_tcp_connect($tcp, uv_ip6_addr("::1",8080), function($tcp_handle, $status){
|
|
uv_close($tcp_handle);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
### resource uv_timer_init([resource $loop])
|
|
|
|
##### *Description*
|
|
|
|
initialize timer handle.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv_loop resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $timer*: initialized timer resource.
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$timer = uv_timer_init();
|
|
````
|
|
|
|
|
|
### void uv_timer_start(resource $timer, long $timeout, long $repeat, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
initialize timer handle.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv_loop resource.
|
|
|
|
*long $timeout*: periodical event starts when after this timeout. 1000 is 1 sec.
|
|
|
|
*long $repeat*: repeat interval. 1000 is 1 sec.
|
|
|
|
##### *Return Value*
|
|
|
|
*void:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$timer = uv_timer_init();
|
|
$after_1_second = 1000;
|
|
$period_is_1_second = 1000;
|
|
uv_timer_start($timer, $after_1_seconds, $period_is_1_second, function($timer, $status){
|
|
echo "Hello\n";
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
### void uv_timer_stop(resource $timer)
|
|
|
|
##### *Description*
|
|
|
|
stop specified timer.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $timer*: uv timer resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*long $retval*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$timer = uv_timer_init();
|
|
uv_timer_start($timer, 100, 100, function($timer, $status){
|
|
echo "Hello\n";
|
|
uv_timer_stop($timer);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
### void uv_timer_again(resource $timer)
|
|
|
|
##### *Description*
|
|
|
|
restart timer.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $timer*: uv_timer resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_timer_set_repeat(resource $timer, long $repeat)
|
|
|
|
##### *Description*
|
|
|
|
set repeat count.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_timer*: uv_timer resource
|
|
|
|
*long $repeat*: repeat count
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### long uv_timer_get_repeat(resource $timer)
|
|
|
|
##### *Description*
|
|
|
|
returns repeat interval.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_timer*: uv_timer resource
|
|
|
|
##### *Return Value*
|
|
|
|
*long $repeat_time*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### resource uv_idle_init([resource $loop])
|
|
|
|
##### *Description*
|
|
|
|
initialize uv idle handle.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv_loop resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $idle*: initialized idle handle.
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$loop = uv_default_loop();
|
|
$idle = uv_idle_init($loop);
|
|
````
|
|
|
|
|
|
|
|
### void uv_idle_start(resource $idle, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
start idle callback.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $idle*: uv_idle resource.
|
|
*callable $callback*: idle callback.
|
|
|
|
##### *Return Value*
|
|
|
|
*long result*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$loop = uv_default_loop();
|
|
$idle = uv_idle_init();
|
|
|
|
$i = 0;
|
|
uv_idle_start($idle, function($idle_handle, $stat) use (&$i){
|
|
echo "count: {$i}" . PHP_EOL;
|
|
$i++;
|
|
|
|
if ($i > 3) {
|
|
uv_idle_stop($idle);
|
|
}
|
|
sleep(1);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
|
|
### void uv_idle_stop(resource $idle)
|
|
|
|
##### *Description*
|
|
|
|
stop idle callback.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $idle*: uv_idle resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*long result*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$loop = uv_default_loop();
|
|
$idle = uv_idle_init();
|
|
|
|
$i = 0;
|
|
uv_idle_start($idle, function($idle_handle, $stat) use (&$i){
|
|
echo "count: {$i}" . PHP_EOL;
|
|
$i++;
|
|
|
|
if ($i > 3) {
|
|
uv_idle_stop($idle);
|
|
}
|
|
sleep(1);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
|
|
### void uv_getaddrinfo(resource $loop, callable $callback, string $node, string $service, array $hints)
|
|
|
|
|
|
### resource uv_tcp_init([resource $loop])
|
|
|
|
##### *Description*
|
|
|
|
create a tcp socket.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: loop resource or null. if not specified loop resource then use uv_default_loop resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*resource php_uv*: uv resource which initialized for tcp.
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
````
|
|
|
|
|
|
|
|
### resource uv_default_loop()
|
|
|
|
##### *Description*
|
|
|
|
return default loop handle.
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $loop*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$loop = uv_default_loop();
|
|
````
|
|
|
|
|
|
|
|
### resource uv_loop_new()
|
|
|
|
##### *Description*
|
|
|
|
create a new loop handle.
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $loop*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$loop = uv_loop_new();
|
|
````
|
|
|
|
|
|
|
|
### resource uv_udp_init([resource $loop])
|
|
|
|
##### *Description*
|
|
|
|
create a udp socket.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: loop resource or null. if not specified loop resource then use uv_default_loop resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*resource php_uv*: uv resource which initialized for udp.
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$udp = uv_udp_init();
|
|
````
|
|
|
|
|
|
|
|
### void uv_udp_bind(resource $resource, resource $address, long $flags)
|
|
|
|
##### *Description*
|
|
|
|
listens for a connection on a uv udp handle.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
*resource $uv_ip_addr*: uv sockaddr(ipv4) resource.
|
|
|
|
*long $flags*: unused.
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$udp = uv_udp_init();
|
|
var_dump($udp);
|
|
|
|
uv_udp_bind($udp, uv_ip4_addr('0.0.0.0',10000));
|
|
|
|
uv_udp_recv_start($udp,function($stream, $nread, $buffer){
|
|
echo "recv:" . $buffer;
|
|
|
|
uv_close($stream);
|
|
});
|
|
|
|
$uv = uv_udp_init();
|
|
uv_udp_send($uv, "Hello", uv_ip4_addr("0.0.0.0",10000),function($uv, $s){
|
|
echo "success" . PHP_EOL;
|
|
uv_close($uv);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
|
|
### void uv_udp_bind6(resource $resource, resource $address, long $flags)
|
|
|
|
##### *Description*
|
|
|
|
listens for a connection on a uv udp handle.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
*resource $uv_ip_addr*: uv sockaddr(ipv6) resource.
|
|
|
|
*long $flags*: Should be 0 or UV::UDP_IPV6ONLY
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$udp = uv_udp_init();
|
|
var_dump($udp);
|
|
|
|
uv_udp_bind6($udp, uv_ip6_addr('::1',10000));
|
|
|
|
uv_udp_recv_start($udp,function($stream, $nread, $buffer){
|
|
echo "recv:" . $buffer;
|
|
|
|
uv_close($stream);
|
|
});
|
|
|
|
$uv = uv_udp_init();
|
|
uv_udp_send6($uv, "Hello", uv_ip6_addr("::1",10000),function($uv, $s){
|
|
echo "success" . PHP_EOL;
|
|
uv_close($uv);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
|
|
### void uv_udp_recv_start(resource $handle, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
start receive callback.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
*callable $callback*: this callback parameter expects (resource $stream, long $nread, string $buffer).
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$udp = uv_udp_init();
|
|
var_dump($udp);
|
|
|
|
uv_udp_bind6($udp, uv_ip6_addr('::1',10000));
|
|
|
|
uv_udp_recv_start($udp,function($stream, $nread, $buffer){
|
|
echo "recv:" . $buffer;
|
|
|
|
uv_close($stream);
|
|
});
|
|
|
|
$uv = uv_udp_init();
|
|
uv_udp_send6($uv, "Hello", uv_ip6_addr("::1",10000),function($uv, $s){
|
|
echo "success" . PHP_EOL;
|
|
uv_close($uv);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
|
|
### void uv_udp_recv_stop(resource $handle)
|
|
|
|
##### *Description*
|
|
|
|
stop receive callback.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
|
|
|
|
### long uv_udp_set_membership(resource $handle, string $multicast_addr, string $interface_addr, long $membership)
|
|
|
|
##### *Description*
|
|
|
|
join or leave udp muticast group..
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
*string $multicast_addr*: multicast address
|
|
|
|
*string $interface_addr*: interface address
|
|
|
|
*long $membership*: UV::JOIN_GROUP or UV::LEAVE_GROUP
|
|
|
|
##### *Return Value*
|
|
|
|
*long *: result code
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_udp_set_multicast_loop(resource $handle, long $enabled)
|
|
|
|
##### *Description*
|
|
|
|
set multicast loop
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
*long $enabled*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_udp_set_multicast_ttl(resource $handle, long $ttl)
|
|
|
|
##### *Description*
|
|
|
|
set multicast ttl
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
*long $ttl*: multicast ttl
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_udp_set_broadcast(resource $handle, bool $enabled)
|
|
|
|
##### *Description*
|
|
|
|
set udp broadcast
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
*long $enabled*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_udp_send(resource $handle, string $data, resource $uv_addr, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
send buffer to specified address.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
*string $data*: data
|
|
|
|
*resource uv_addr*: uv_ip4_addr
|
|
|
|
*callable $callback*: this callback parameter expects (resource $stream, long $status).
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$udp = uv_udp_init();
|
|
var_dump($udp);
|
|
|
|
uv_udp_bind($udp, uv_ip4_addr('::1',10000));
|
|
|
|
uv_udp_recv_start($udp,function($stream, $nread, $buffer){
|
|
echo "recv:" . $buffer;
|
|
|
|
uv_close($stream);
|
|
});
|
|
|
|
$uv = uv_udp_init();
|
|
uv_udp_send($uv, "Hello", uv_ip4_addr("::1",10000),function($uv, $s){
|
|
echo "success" . PHP_EOL;
|
|
uv_close($uv);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
### void uv_udp_send6(resource $handle, string $data, resource $uv_addr6, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
send buffer to specified address.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (udp)
|
|
|
|
*string $data*: data
|
|
|
|
*resource uv_addr*: uv_ip6_addr
|
|
|
|
*callable $callback*: this callback parameter expects (resource $stream, long $status).
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$udp = uv_udp_init();
|
|
var_dump($udp);
|
|
|
|
uv_udp_bind6($udp, uv_ip6_addr('::1',10000));
|
|
|
|
uv_udp_recv_start($udp,function($stream, $nread, $buffer){
|
|
echo "recv:" . $buffer;
|
|
|
|
uv_close($stream);
|
|
});
|
|
|
|
$uv = uv_udp_init();
|
|
uv_udp_send6($uv, "Hello", uv_ip6_addr("::1",10000),function($uv, $s){
|
|
echo "success" . PHP_EOL;
|
|
uv_close($uv);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
### bool uv_is_active(resource $handle)
|
|
|
|
|
|
### bool uv_is_readable(resource $handle)
|
|
|
|
|
|
### bool uv_is_writable(resource $handle)
|
|
|
|
|
|
### bool uv_walk(resource $loop, callable $closure[, array $opaque])
|
|
|
|
##### *TODO*
|
|
|
|
* implement this.
|
|
|
|
|
|
|
|
### long uv_guess_handle(resource $uv)
|
|
|
|
|
|
### long uv_handle_type(resource $uv)
|
|
|
|
##### *Description*
|
|
|
|
returns current uv type. (this is not libuv function. util for php-uv)
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_handle*: uv_handle
|
|
|
|
##### *Return Value*
|
|
|
|
*long $handle_type*: should return UV::IS_UV_* constatns. e.g) UV::IS_UV_TCP
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$tcp = uv_tcp_init();
|
|
var_dump(uv_handle_type($tcp));
|
|
````
|
|
|
|
##### *Note*
|
|
|
|
* this may change.
|
|
|
|
|
|
|
|
### resource uv_pipe_init(resource $loop, long $ipc)
|
|
|
|
##### *Description*
|
|
|
|
initialize pipe resource
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_loop*: uv_loop resource
|
|
|
|
*bool $ipc*: when this pipe use for ipc, please set true otherwise false.
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $uv_pipe*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$pipe = uv_pipe_init(uv_default_loop(), true);
|
|
````
|
|
|
|
|
|
|
|
### void uv_pipe_open(resource $handle, long $pipe)
|
|
|
|
##### *Description*
|
|
|
|
open a pipe resource.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_handle*: uv pipe handle
|
|
|
|
*long $pipe: dunnno. maybe file descriptor.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### long uv_pipe_bind(resource $handle, string $name)
|
|
|
|
##### *Description*
|
|
|
|
create a named pipe.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_handle*: uv pipe handle
|
|
|
|
*long $pipe: dunnno. maybe file descriptor.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_pipe_connect(resource $handle, string $path, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
connect to named pipe.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_handle*: uv pipe handle
|
|
|
|
*string $path: named pipe path
|
|
|
|
*callable $callback: this callback parameter expects (resource $pipe, long $status)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
b = uv_pipe_init(uv_default_loop(), 0);
|
|
uv_pipe_connect($b, PIPE_PATH, function($a,$b){
|
|
uv_write($b,"Hello", function($stream,$stat){
|
|
uv_close($stream);
|
|
});
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
|
|
### void uv_pipe_pending_instances(resource $handle, long $count)
|
|
|
|
|
|
### resource uv_ares_init_options(resource $loop, array $options, long $optmask)
|
|
|
|
|
|
### void ares_gethostbyname(resource $handle, string $name, long $flag, callable $callback)
|
|
|
|
|
|
### array uv_loadavg(void)
|
|
|
|
##### *Description*
|
|
|
|
retunrs current loadaverage.
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*array $loadaverage*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
var_dump(uv_loadavg());
|
|
//array(3) {
|
|
// [0]=>
|
|
// float(1.7421875)
|
|
// [1]=>
|
|
// float(1.427734375)
|
|
// [2]=>
|
|
// float(1.3955078125)
|
|
//}
|
|
````
|
|
|
|
##### *Note*
|
|
|
|
returns array on windows box. (does not support load average on windows)
|
|
|
|
|
|
|
|
### double uv_uptime(void)
|
|
|
|
##### *Description*
|
|
|
|
returns current uptime.
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*long $uptime*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
var_dump(uv_uptime());
|
|
//float(1247516)
|
|
````
|
|
|
|
|
|
|
|
### long uv_get_free_memory(void)
|
|
|
|
##### *Description*
|
|
|
|
returns current free memory size.
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*long $free*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
var_dump(uv_get_free_memory());
|
|
//int(135860224)
|
|
````
|
|
|
|
|
|
|
|
### long uv_get_total_memory(void)
|
|
|
|
##### *Description*
|
|
|
|
returns total memory size.
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*long $free*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
var_dump(uv_get_total_memory());
|
|
//int(8589934592)
|
|
````
|
|
|
|
|
|
|
|
### long uv_hrtime(void)
|
|
|
|
##### *TODO*
|
|
|
|
check implmentation
|
|
|
|
|
|
|
|
### string uv_exepath(void)
|
|
|
|
##### *Description*
|
|
|
|
returns current exepath. basically this will returns current php path.
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*string $exepath*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
var_dump(uv_exepath());
|
|
//string(53) "/Users/chobie/.phpenv/versions/5.4.1-zts-goto/bin/php"
|
|
```
|
|
|
|
|
|
|
|
### string uv_cwd(void)
|
|
|
|
##### *Description*
|
|
|
|
returns current working directory.
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*string $cwd*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
var_dump(uv_cwd());
|
|
//string(24) "/Users/chobie/src/php-uv"
|
|
````
|
|
|
|
|
|
|
|
### array uv_cpu_info(void)
|
|
|
|
##### *Description*
|
|
|
|
returns current cpu informations
|
|
|
|
.
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*array $cpu_info*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
var_dump(uv_cpu_info());
|
|
//array(8) {
|
|
// [0]=>
|
|
// array(3) {
|
|
// ["model"]=>
|
|
// string(13) "MacBookPro8,2"
|
|
// ["speed"]=>
|
|
// int(2200)
|
|
// ["times"]=>
|
|
// array(5) {
|
|
// ["sys"]=>
|
|
// int(69952140)
|
|
// ["user"]=>
|
|
// int(38153450)
|
|
// ["idle"]=>
|
|
// int(776709120)
|
|
// ["irq"]=>
|
|
// int(0)
|
|
// ["nice"]=>
|
|
// int(0)
|
|
// }
|
|
// }...
|
|
````
|
|
|
|
|
|
|
|
### array uv_interface_addresses(void)
|
|
|
|
### resource uv_stdio_new(zval $fd, long $flags)
|
|
|
|
### resource uv_spawn(resource $loop, string $command, array $args, array $stdio, string $cwd, array $env = array(), callable $callback [,long $flags, array $options])
|
|
|
|
|
|
### void uv_process_kill(resource $handle, long $signal)
|
|
|
|
##### *Description*
|
|
|
|
send signal to specified uv process resource.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (process)
|
|
|
|
*long $signal*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_kill(long $pid, long $signal)
|
|
|
|
##### *Description*
|
|
|
|
send signal to specified pid.
|
|
|
|
##### *Parameters*
|
|
|
|
*long $pid*: process id
|
|
|
|
*long $signal*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### bool uv_chdir(string $directory)
|
|
|
|
##### *Description*
|
|
|
|
change working directory.
|
|
|
|
##### *Parameters*
|
|
|
|
*string $directory*:
|
|
|
|
##### *Return Value*
|
|
|
|
*bool *:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### resource uv_rwlock_init(void)
|
|
|
|
##### *Description*
|
|
|
|
initialize rwlock resource
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $rwlock*: returns uv rwlock resource
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### uv_rwlock_rdlock(resource $handle)
|
|
|
|
##### *Description*
|
|
|
|
set read lock
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (uv rwlock)
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### bool uv_rwlock_tryrdlock(resource $handle)
|
|
|
|
##### *TODO*
|
|
|
|
* implemnt this correctly
|
|
|
|
|
|
|
|
### void uv_rwlock_rdunlock(resource $handle)
|
|
|
|
##### *Description*
|
|
|
|
unlock read lock
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (uv rwlock)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### uv_rwlock_wrlock(resource $handle)
|
|
|
|
##### *Description*
|
|
|
|
set write lock
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (uv rwlock)
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### uv_rwlock_trywrlock(resource $handle)
|
|
|
|
##### *TODO*
|
|
|
|
* implement this correctly
|
|
|
|
|
|
|
|
### uv_rwlock_wrunlock(resource $handle)
|
|
|
|
##### *Description*
|
|
|
|
unlock write lock
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (uv rwlock)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### uv_lock uv_mutex_init(void)
|
|
|
|
##### *Description*
|
|
|
|
initialize mutex resource
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $uv_mutex*: uv mutex resource
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_mutex_lock(uv_lock $lock)
|
|
|
|
##### *Description*
|
|
|
|
lock mutex
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (uv mutex)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### bool uv_mutex_trylock(uv_lock $lock)
|
|
|
|
##### *TODO*
|
|
|
|
* implement this correctly
|
|
|
|
|
|
|
|
### uv_lock uv_sem_init(long $value)
|
|
|
|
##### *Description*
|
|
|
|
initialize semaphore resource
|
|
|
|
##### *Parameters*
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $uv_sem*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_sem_post(uv_lock $sem)
|
|
|
|
##### *Description*
|
|
|
|
post semaphore
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (uv sem)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_sem_wait(uv_lock $sem)
|
|
|
|
##### *Todo*
|
|
|
|
* implemnt this correctly
|
|
|
|
|
|
|
|
### void uv_sem_trywait(uv_lock $sem)
|
|
|
|
##### *Todo*
|
|
|
|
* implment this correctly
|
|
|
|
|
|
|
|
### resource uv_prepare_init(resource $loop)
|
|
|
|
##### *Description*
|
|
|
|
initialize prepare resource
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv loop handle
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $uv_prepare*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$prepare = uv_prepare_init(uv_default_loop());
|
|
````
|
|
|
|
|
|
|
|
### void uv_prepare_start(resource $handle, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
setup prepare loop callback. (pre loop callback)
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (prepare)
|
|
|
|
*callable $callback*: this callback parameter expects (resource $prepare, long $status).
|
|
|
|
##### *Return Value*
|
|
|
|
*long *:
|
|
|
|
##### *Example*
|
|
````php
|
|
|
|
<?php
|
|
$loop = uv_default_loop();
|
|
$prepare = uv_prepare_init($loop);
|
|
|
|
uv_prepare_start($prepare, function($rsc, $status){
|
|
echo "Hello";
|
|
uv_unref($rsc);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
### void uv_prepare_stop(resource $handle)
|
|
|
|
##### *Description*
|
|
|
|
stop prepare callback
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $prepare*: uv resource handle (prepare)
|
|
|
|
##### *Return Value*
|
|
|
|
*long*:
|
|
|
|
|
|
|
|
### resource uv_check_init([resource $loop])
|
|
|
|
##### *Description*
|
|
|
|
setup check resource
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv loop handle
|
|
|
|
##### *Return Value*
|
|
|
|
*resource uv_check*:
|
|
|
|
##### *Example*
|
|
````php
|
|
<?php
|
|
$check = uv_check_init(uv_default_loop());
|
|
````
|
|
|
|
|
|
### void uv_check_start(resource $handle, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
stats check loop callback. (after loop callback)
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv resource handle (check)
|
|
|
|
*callable $callback*: this callback parameter expects (resource $check, long $status).
|
|
|
|
##### *Return Value*
|
|
|
|
*long *:
|
|
|
|
##### *Example*
|
|
````php
|
|
<?php
|
|
$loop = uv_default_loop();
|
|
$check = uv_check_init($loop);
|
|
|
|
$idle = uv_idle_init();
|
|
|
|
$i = 0;
|
|
uv_idle_start($idle, function($stat) use (&$i, $idle, $loop){
|
|
echo "count: {$i}" . PHP_EOL;
|
|
$i++;
|
|
|
|
if ($i > 3) {
|
|
uv_idle_stop($idle);
|
|
}
|
|
sleep(1);
|
|
});
|
|
|
|
uv_check_start($check, function($check, $status){
|
|
echo "Hello";
|
|
uv_check_stop($check);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
### void uv_check_stop(resource $handle)
|
|
|
|
##### *Description*
|
|
|
|
stop check callback
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $check*: uv resource handle (check)
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
|
|
|
|
### resource uv_async_init(resource $loop, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
setup async callback
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv loop resource
|
|
|
|
*callback $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*resource *: uv async resource
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_async_send(resource $handle)
|
|
|
|
##### *Description*
|
|
|
|
send async callback immidiately
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv async handle
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_queue_work(resource $loop, callable $callback, callable $after_callback)
|
|
|
|
##### *Description*
|
|
|
|
execute callbacks in another thread (requires Thread Safe enabled PHP)
|
|
|
|
|
|
### resource uv_fs_open(resource $loop, string $path, long $flag, long $mode, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
open specified file
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv_loop resource.
|
|
|
|
*string $path*: file path
|
|
|
|
*long $flag*: file flag. this should be UV::O_RDONLY and some constants flag.
|
|
|
|
*long $mode*: mode flag. this should be UV::S_IRWXU and some mode flag.
|
|
|
|
*callable $calback*: this callback parameter expects (resource $stream)
|
|
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
uv_fs_open(uv_default_loop(),"/tmp/hello",
|
|
UV::O_WRONLY | UV::O_CREAT | UV::O_APPEND,
|
|
UV::S_IRWXU | UV::S_IRUSR,
|
|
function($r){
|
|
|
|
uv_fs_write(uv_default_loop(),$r,"hello",0, function($a) use ($r){
|
|
uv_fs_fdatasync(uv_default_loop(),$r,function(){
|
|
echo "fsync finished";
|
|
});
|
|
});
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
|
|
|
|
### void uv_fs_read(resource $loop, zval $fd, long $length, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async read.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv loop handle
|
|
|
|
*zval $fd*: this expects long $fd, resource $php_stream or resource $php_socket.
|
|
|
|
*resource $callback*: this callback parameter expects (zval $fd, long $nread, string $buffer).
|
|
|
|
##### *Return Value*
|
|
|
|
*void *:
|
|
|
|
|
|
|
|
### void uv_fs_close(resource $loop, zval $fd, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
close specified file descriptor.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv_loop resource.
|
|
|
|
*zval $fd*: file descriptor. this expects long $fd, resource $php_stream or resource $php_socket.
|
|
|
|
*callable $calback*: this callback parameter expects (resource $stream)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
##### *todo*
|
|
|
|
* handling PHP's stream and socket correctly.
|
|
|
|
|
|
|
|
### void uv_fs_write(resource $loop, zval $fd, string $buffer, long $offset, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
write buffer to specified file descriptor.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $loop*: uv_loop resource.
|
|
|
|
*zval $fd*: file descriptor. this expects long $fd, resource $php_stream or resource $php_socket.
|
|
|
|
*string $buffer*: buffer.
|
|
|
|
*callable $calback*: this callback parameter expects (resource $stream, long $result)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_fs_fsync(resource $loop, zval $fd, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async fsync
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*zval $fd*:
|
|
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_fs_fdatasync(resource $loop, zval $fd, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async fdatasync
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*zval $fd*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_ftruncate(resource $loop, zval $fd, long $offset, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async ftruncate
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*zval $fd*:
|
|
|
|
*long $offset*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_mkdir(resource $loop, string $path, long $mode, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async mkdir
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*long $mode*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_rmdir(resource $loop, string $path, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async rmdir
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_unlink(resource $loop, string $path, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async unlink
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_rename(resource $loop, string $from, string $to, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async rename
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $from*:
|
|
|
|
*string $to*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_fs_utime(resource $loop, string $path, long $utime, long $atime, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async utime
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*long $utime*:
|
|
|
|
*long $atime*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_fs_futime(resource $loop, zval $fd, long $utime, long $atime callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async futime
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*zval $fd*:
|
|
|
|
*long $utime*:
|
|
|
|
*long $atime*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_chmod(resource $loop, string $path, long $mode, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async chmod
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*long $mode*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_fchmod(resource $loop, zval $fd, long $mode, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async fchmod
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*zval $fd*:
|
|
|
|
*long $mode*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_chown(resource $loop, string $path, long $uid, long $gid, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async chown
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $paht*:
|
|
|
|
*long $uid*:
|
|
|
|
*long $gid*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_fchown(resource $loop, zval $fd, long $uid, $long $gid, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async fchown
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*zval $fd*:
|
|
|
|
*long $uid*:
|
|
|
|
*long $gid*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_link(resource $loop, string $from, string $to, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async link
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $from*:
|
|
|
|
*string $to*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_symlink(resource $loop, string $from, string $to, long $flags, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async symlink
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $from*:
|
|
|
|
*string $to*:
|
|
|
|
*long $flags*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_readlink(resource $loop, string $path, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async readlink
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_stat(resource $loop, string $path, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async stat
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*callable $callback*: this callback parameter expects (resource $stream, array $stat)
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_fs_lstat(resource $loop, string $path, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async lstat
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### void uv_fs_fstat(resource $loop, zval $fd, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async fstat
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*zval $fd*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### uv_fs_readdir(resource $loop, string $path, long $flags, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async readdir
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*long $flags*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### void uv_fs_sendfile(resource $loop, zval $in_fd, zval $out_fd, long $offset, long $length, callable $callback)
|
|
|
|
##### *Description*
|
|
|
|
async sendfile
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*zval $in_fd*:
|
|
|
|
*zval $out_fd*:
|
|
|
|
*long $offset*:
|
|
|
|
*long $length*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
### resource uv_fs_event_init(resource $loop, string $path, callable $callback, long $flags = 0)
|
|
|
|
##### *Description*
|
|
|
|
initialize fs event.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*string $path*:
|
|
|
|
*callable $callback*:
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### resource uv_tty_init(resource $loop, zval $fd, long $readable)
|
|
|
|
##### *Description*
|
|
|
|
initialize tty resource. you have to open tty your hand.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $handle*: uv loop handle
|
|
|
|
*zval $fd*:
|
|
|
|
*long $readable*:
|
|
|
|
##### *Return Value*
|
|
|
|
*resource $uv_tty*:
|
|
|
|
##### *Example*
|
|
|
|
|
|
|
|
### long uv_tty_get_winsize(resource $tty, long &$width, long &$height)
|
|
|
|
|
|
### long uv_tty_set_mode(resource $tty, long $mode)
|
|
|
|
|
|
### void uv_tty_reset_mode(void)
|
|
|
|
|
|
### string uv_tcp_getsockname(resource $uv_sockaddr)
|
|
|
|
|
|
### string uv_tcp_getpeername(resource $uv_sockaddr)
|
|
|
|
|
|
### string uv_udp_getsockname(resource $uv_sockaddr)
|
|
|
|
|
|
### long uv_resident_set_memory(void)
|
|
|
|
|
|
### string uv_ip4_name(resource uv_sockaddr $address)
|
|
|
|
|
|
### string uv_ip6_name(resource uv_sockaddr $address)
|
|
|
|
|
|
### uv uv_poll_init([resource $uv_loop], zval fd)
|
|
|
|
##### *Description*
|
|
|
|
initialize poll
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $uv_loop*: uv_loop resource.
|
|
|
|
*mixed $fd*: this expects long fd, PHP's stream or PHP's socket resource.
|
|
|
|
##### *Return Value*
|
|
|
|
*resource uv*: uv resource which initialized poll.
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$fd = fopen("php://stdout","w+");
|
|
|
|
$poll = uv_poll_init(uv_default_loop(), $fd);
|
|
|
|
````
|
|
|
|
##### *Note*
|
|
|
|
* if you want to use a socket. please use uv_poll_init_socket instead of this. Windows can't handle socket with this function.
|
|
* some platform doesn't support file descriptor on these method.
|
|
|
|
### uv uv_poll_init_socket([resource $uv_loop], zval fd)
|
|
|
|
|
|
### uv uv_poll_start(resource $handle, $events, $callback)
|
|
|
|
##### *Description*
|
|
|
|
start polling
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $poll*: uv poll resource.
|
|
|
|
*long $events*: UV::READBLE and UV::WRITABLE flags.
|
|
|
|
*callable $callback*: this callback parameter expects (resource $poll, long $status, long $events, mixed $connection). the connection parameter passes uv_poll_init'd fd.
|
|
|
|
##### *Return Value*
|
|
|
|
*void*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$fd = fopen("php://stdout","w+");
|
|
|
|
$poll = uv_poll_init(uv_default_loop(), $fd);
|
|
uv_poll_start($poll, UV::WRITABLE, function($poll, $stat, $ev, $conn){
|
|
fwrite($conn, "Hello");
|
|
fclose($conn);
|
|
uv_poll_stop($poll);
|
|
});
|
|
|
|
uv_run();
|
|
````
|
|
|
|
##### *Note*
|
|
|
|
* if you want to use a socket. please use uv_poll_init_socket instead of this. Windows can't handle socket with this function.
|
|
|
|
|
|
|
|
### void uv_poll_stop(resource $poll)
|
|
|
|
|
|
### uv uv_fs_poll_init([resource $uv_loop])
|
|
|
|
|
|
### uv uv_fs_poll_start(resource $handle, $callback, string $path, long $interval)
|
|
|
|
|
|
### void uv_fs_poll_stop(resource $poll)
|
|
|
|
|
|
### resource uv_http_parser_init(long $target = UV::HTTP_REQUEST)
|
|
|
|
##### *Description*
|
|
|
|
initialize http parser.
|
|
|
|
##### *Parameters*
|
|
|
|
*long $target*: this expects UV::HTTP_REQUEST, UV::HTTP_RESPONSE or UV::HTTP_BOTH.
|
|
|
|
##### *Return Value*
|
|
|
|
*resource uv_http*:
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$parser = uv_http_parser_init(UV::HTTP_REQUEST);
|
|
````
|
|
|
|
|
|
|
|
### bool uv_http_parser_execute(resource $parser, string $body, array &$result)
|
|
|
|
##### *Description*
|
|
|
|
execute http parser.
|
|
|
|
##### *Parameters*
|
|
|
|
*resource $parser*: uv_http_parser resoruce.
|
|
|
|
*string $body*: http message.
|
|
|
|
*array &$result*: result array.
|
|
|
|
|
|
##### *Return Value*
|
|
|
|
*bool finished*: this parser returns false when specified http message is invalid or not enough message.
|
|
|
|
##### *Example*
|
|
|
|
````php
|
|
<?php
|
|
$parser = uv_http_parser_init(UV::HTTP_REQUEST);
|
|
if (uv_http_parser_execute($parser, "GET /img/http-parser.png?key=value#frag HTTP/1.1
|
|
Host: chobie.net
|
|
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20100101 Firefox/12.0
|
|
Accept-Language: en-us,en;q=0.5
|
|
Accept-Encoding: gzip, deflate
|
|
Connection: keep-alive
|
|
Referer: http://chobie.net/
|
|
Cookie: key=value
|
|
Cache-Control: max-age=0
|
|
|
|
",$result)) {
|
|
var_dump($result);
|
|
//array(6) {
|
|
// ["headers"]=>
|
|
// array(8) {
|
|
// ["Host"]=>
|
|
// string(10) "chobie.net"
|
|
// ["User-Agent"]=>
|
|
// string(81) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20100101 Firefox/12.0"
|
|
// ["Accept-Language"]=>
|
|
// string(14) "en-us,en;q=0.5"
|
|
// ["Accept-Encoding"]=>
|
|
// string(13) "gzip, deflate"
|
|
// ["Connection"]=>
|
|
// string(10) "keep-alive"
|
|
// ["Referer"]=>
|
|
// string(18) "http://chobie.net/"
|
|
// ["Cookie"]=>
|
|
// string(9) "key=value"
|
|
// ["Cache-Control"]=>
|
|
// string(9) "max-age=0"
|
|
// }
|
|
// ["QUERY_STRING"]=>
|
|
// string(35) "/img/http-parser.png?key=value#frag"
|
|
// ["path"]=>
|
|
// string(20) "/img/http-parser.png"
|
|
// ["query"]=>
|
|
// string(9) "key=value"
|
|
// ["fragment"]=>
|
|
// string(4) "frag"
|
|
// ["REQUEST_METHOD"]=>
|
|
// string(3) "GET"
|
|
//}
|
|
}
|
|
|
|
````
|
|
|