43 KiB
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
(cd libuv && make)
phpize
./configure
make
make install
# add `extension=uv.so` to your php.ini
Examples
see examples and tests directory.
<?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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$tcp = uv_tcp_init();
resource uv_default_loop()
Description
return default loop handle.
Parameters
Return Value
resource $loop:
Example
<?php
$loop = uv_default_loop();
resource uv_loop_new()
Description
create a new loop handle.
Parameters
Return Value
resource $loop:
Example
<?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
$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
$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
$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
$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
$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
$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
$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
$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
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
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
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
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
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
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
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
$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
$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:
resoruce uv_check_init([resource $loop])
Description
setup check resource
Parameters
resource $loop: uv loop handle
Return Value
resource uv_check:
Example
<?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
$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)
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
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(resoruce $loop, zval $fd, 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)
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:
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
$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.
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
$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
$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
$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"
//}
}