Skip to content

Latest commit

 

History

History
3053 lines (1621 loc) · 43.7 KB

README.md

File metadata and controls

3053 lines (1621 loc) · 43.7 KB

php-uv

Build Status

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
$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:

resource 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)

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
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
$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
$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"
//}
}

void uv_stop([resource $uv_loop])

Description
Parameters

resource $uv_loop: uv loop handle

Return Value

void:

Example

resource uv_signal_init([resource $uv_loop])

Description
Parameters

resource $uv_loop: uv loop handle

Return Value

resource:

Example

void uv_signal_start(resource $sig_handle, callable $sig_callback, int $sig_num)

Description
Parameters

resource $sig_handle:

callable $callable: signal callback

int $sig_num: signal

Return Value

void:

Example

int uv_signal_stop(resource $sig_handle)

Description
Parameters

resource $sig_handle:

Return Value

int $sig_num:

Example