1# php-uv 2 3[![Build Status](https://secure.travis-ci.org/bwoebi/php-uv.png)](http://travis-ci.org/bwoebi/php-uv) 4 5Interface to libuv for php. 6 7# Install 8 9## \*nix 10 11```` 12git clone https://github.com/bwoebi/php-uv.git 13cd php-uv 14phpize 15./configure 16make 17make install 18# add `extension=uv.so` to your php.ini 19```` 20 21## Windows 22 23Windows builds for stable PHP versions are available [from PECL](https://pecl.php.net/package/uv). 24 25# Examples 26 27see examples and tests directory. 28 29````php 30<?php 31$tcp = uv_tcp_init(); 32 33uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',8888)); 34 35uv_listen($tcp,100, function($server){ 36 $client = uv_tcp_init(); 37 uv_accept($server, $client); 38 var_dump(uv_tcp_getsockname($server)); 39 40 uv_read_start($client, function($socket, $nread, $buffer){ 41 var_dump($buffer); 42 uv_close($socket); 43 }); 44}); 45 46$c = uv_tcp_init(); 47uv_tcp_connect($c, uv_ip4_addr('0.0.0.0',8888), function($stream, $stat){ 48 if ($stat == 0) { 49 uv_write($stream,"Hello",function($stream, $stat){ 50 uv_close($stream); 51 }); 52 } 53}); 54 55uv_run(); 56```` 57 58# Original Author 59 60* Shuhei Tanuma 61 62# Current Maintainer 63 64* Bob Weinand 65 66# License 67 68PHP License 69 70 71# Documents 72 73### void uv_unref(resource $uv_t) 74 75##### *Description* 76 77decrement reference 78 79##### *Parameters* 80 81*resource $uv_t*: uv resource handle. 82 83##### *Return Value* 84 85*void *: 86 87##### *Example* 88 89````php 90<?php 91$tcp = uv_tcp_init(); 92uv_unref($tcp); 93 94```` 95 96 97 98### long uv_last_error([resource $uv_loop]) 99 100##### *Description* 101 102get last error code. 103 104##### *Parameters* 105 106*resource $uv_loop*: uv loop handle 107 108##### *Return Value* 109 110*long $error_code*: error code 111 112##### *Example* 113 114````php 115<?php 116$err = uv_last_error(); 117var_dump($err); 118```` 119 120 121### string uv_err_name(long $error_code) 122 123##### *Description* 124 125get error code name. 126 127##### *Parameters* 128 129*long $error_code*: libuv error code 130 131##### *Return Value* 132 133*string $erorr_name*: error name 134 135##### *Example* 136 137````php 138<?php 139$err = uv_last_error(); 140var_dump(uv_err_name($err)); 141```` 142 143 144### string uv_strerror(long $error_code) 145 146##### *Description* 147 148get error message. 149 150##### *Parameters* 151 152*long $error_code*: libuv error code 153 154##### *Return Value* 155 156*string $erorr_message*: error message 157 158##### *Example* 159 160````php 161<?php 162$err = uv_last_error(); 163var_dump(uv_strerror($err)); 164```` 165 166 167 168### void uv_update_time(resource $uv_loop) 169 170 171### void uv_ref(resource $uv_handle) 172 173##### *Description* 174 175increment reference count 176 177##### *Parameters* 178 179*resource $uv_handle*: uv resource. 180 181##### *Return Value* 182 183*void*: 184 185##### *Example* 186 187````php 188<?php 189$tcp = uv_tcp_init(); 190uv_ref($tcp); 191```` 192 193##### *TODO* 194 195* support uv_loop resource 196 197 198 199### void uv_run([resource $uv_loop]) 200 201##### *Description* 202 203run event loop 204 205##### *Parameters* 206 207*resource $uv_loopg*: uv_loop resource 208 209##### *Return Value* 210 211*void*: 212 213##### *Example* 214 215````php 216<?php 217$loop = uv_default_loop(); 218$async = uv_async_init($loop, function($async, $status){ 219 var_dump(1); 220 uv_close($async); 221}); 222 223uv_async_send($async); 224 225uv_run(); 226```` 227 228 229 230### void uv_run_once([resource $uv_loop]) 231 232 233### void uv_loop_delete(resource $uv_loop) 234 235##### *Description* 236 237delete specified loop resource. 238 239##### *Parameters* 240 241*resource $uv_loop*: uv_loop resource 242 243##### *Return Value* 244 245*void*: 246 247##### *Example* 248 249 250 251### long uv_now(resource $uv_loop) 252 253 254### void uv_tcp_bind(resource $uv_tcp, resource $uv_sockaddr) 255 256##### *Description* 257 258binds a name to a socket. 259 260##### *Parameters* 261 262*resource $uv_tcp*: uv_tcp resource 263 264*resource $uv_sockaddr*: uv sockaddr4 resource. 265 266##### *Return Value* 267 268*void*: 269 270##### *Example* 271 272````php 273<?php 274$tcp = uv_tcp_init(); 275 276uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',9999)); 277 278uv_listen($tcp,100, function($server){ 279 $client = uv_tcp_init(); 280 uv_accept($server, $client); 281 var_dump(uv_tcp_getsockname($server)); 282 283 uv_read_start($client, function($socket, $nread, $buffer) use ($server){ 284 var_dump($buffer); 285 uv_close($socket); 286 uv_close($server); 287 }); 288}); 289```` 290 291 292 293### void uv_tcp_bind6(resource $uv_tcp, resource $uv_sockaddr) 294 295##### *Description* 296 297binds a name to a socket. 298 299##### *Parameters* 300 301*resource $uv_tcp*: uv_tcp resource 302 303*resource $uv_sockaddr*: uv sockaddr6 resource. 304 305##### *Return Value* 306 307*void*: 308 309##### *Example* 310 311````php 312<?php 313$tcp = uv_tcp_init(); 314uv_tcp_bind6($tcp, uv_ip6_addr('::1',9999)); 315 316uv_listen($tcp,100, function($server){ 317 $client = uv_tcp_init(); 318 uv_accept($server, $client); 319 var_dump(uv_tcp_getsockname($server)); 320 321 uv_read_start($client, function($socket, $nread, $buffer) use ($server){ 322 var_dump($buffer); 323 uv_close($socket); 324 uv_close($server); 325 }); 326}); 327```` 328 329 330 331### void uv_write(resource $handle, string $data, callable $callback) 332 333##### *Description* 334 335send buffer to speicified uv resource. 336 337##### *Parameters* 338 339*resource $handle*: uv resources (uv_tcp, uv_udp, uv_pipe ...etc.) 340*string $data*: buffer. 341*callable $callback*: callable variables. this callback expects (resource $handle, long $status) 342 343##### *Return Value* 344 345*void*: 346 347##### *Example* 348 349 350 351### void uv_write2(resource $handle, string $data, resource $send, callable $callback) 352 353 354### void uv_tcp_nodelay(resource $handle, bool $enable) 355 356##### *Description* 357 358set Nagel's flags for specified tcp resource. 359 360##### *Parameters* 361 362*resource $handle*: libuv tcp resource 363 364*bool $enable*: true means enabled. false means disabled. 365 366##### *Return Value* 367 368*void*: 369 370##### *Example* 371 372````php 373<?php 374$tcp = uv_tcp_init(); 375uv_tcp_nodelay($tcp, true); 376```` 377 378 379### void uv_accept(resource $server, resource $client) 380 381##### *Description* 382 383accepts a connection on a socket. 384 385##### *Parameters* 386 387*resource $uv*: uv_tcp or uv_pipe server resource 388 389*resource $uv*: uv_tcp or uv_pipe client resource. 390 391##### *Return Value* 392 393*void*: 394 395##### *Example* 396 397````php 398<?php 399$tcp = uv_tcp_init(); 400 401uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',9999)); 402 403uv_listen($tcp,100, function($server){ 404 $client = uv_tcp_init(); 405 uv_accept($server, $client); 406 var_dump(uv_tcp_getsockname($server)); 407 408 uv_read_start($client, function($socket, $nread, $buffer) use ($server){ 409 var_dump($buffer); 410 uv_close($socket); 411 uv_close($server); 412 }); 413}); 414```` 415 416 417 418### void uv_shutdown(resource $handle, callable $callback) 419 420##### *Description* 421 422shutdown uv handle. 423 424##### *Parameters* 425 426*resource $handle*: uv resources (uv_tcp, uv_udp, uv_pipe ...etc.) 427*callable $callback*: callable variables. this callback expects (resource $handle, long $status) 428 429##### *Return Value* 430 431*void*: 432 433##### *Example* 434 435 436 437### void uv_close(resource $handle, callable $callback) 438 439##### *Description* 440 441close uv handle. 442 443##### *Parameters* 444 445*resource $handle*: uv resources (uv_tcp, uv_udp, uv_pipe ...etc.) 446*callable $callback*: callable variables. this callback expects (resource $handle, long $status) 447 448##### *Return Value* 449 450*void*: 451 452##### *Example* 453 454 455 456### void uv_read_start(resource $handle, callable $callback) 457 458##### *Description* 459 460starts read callback for uv resources. 461 462##### *Parameters* 463 464*resource $handle*: uv resources (uv_tcp, uv_udp, uv_pipe ...etc.) 465 466*callable $callback*: callable variables. this callback parameter expects (resource $handle, long $nread, string buffer) 467 468##### *Return Value* 469 470*void*: 471 472##### *Example* 473 474##### *Note* 475 476* You have to handle erorrs correctly. otherwise this will leak. 477* if you want to use PHP's stream or socket resource. see uv_fs_poll_init and uv_fs_read. 478 479 480 481### void uv_read2_start(resource $handle, callable $callback) 482 483 484### void uv_read_stop(resource $handle) 485 486##### *Description* 487 488stop read callback 489 490##### *Parameters* 491 492*resource $uv*: uv resource handle which started uv_read. 493 494##### *Return Value* 495 496*void*: 497 498##### *Example* 499 500````php 501<?php 502$tcp = uv_tcp_init(); 503 504uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',9999)); 505 506uv_listen($tcp,100, function($server){ 507 $client = uv_tcp_init(); 508 uv_accept($server, $client); 509 var_dump(uv_tcp_getsockname($server)); 510 511 uv_read_start($client, function($socket, $nread, $buffer) use ($server){ 512 uv_read_stop($socket); 513 var_dump($buffer); 514 uv_close($socket); 515 uv_close($server); 516 }); 517}); 518```` 519 520 521 522### resource uv_ip4_addr(string $ipv4_addr, long $port) 523 524##### *Description* 525 526create a ipv4 sockaddr. 527 528##### *Parameters* 529 530*string $ipv4_addr*: ipv4 address 531 532*long $port*: port number. 533 534##### *Return Value* 535 536*resource $uv_sockaddr*: sockaddr resource 537 538##### *Example* 539 540````php 541<?php 542$sockaddr = uv_ip4_addr("127.0.0.1", 8080); 543```` 544 545##### *Todo* 546 547* check passed ip address is valid. 548* check port number is valid 549 550 551 552### resource uv_ip6_addr(string $ipv6_addr, long $port) 553 554##### *Description* 555 556create a ipv6 sockaddr. 557 558##### *Parameters* 559 560*string $ipv6_addr*: ipv6 address 561 562*long $port*: port number. 563 564##### *Return Value* 565 566*resource $uv_sockaddr*: sockaddr resource 567 568##### *Example* 569 570````php 571<?php 572$sockaddr = uv_ip6_addr("::1", 8080); 573```` 574 575##### *Todo* 576 577* check passed ip address is valid. 578* check port number is valid 579 580 581 582### void uv_listen(resource $handle, long $backlog, callable $callback) 583 584##### *Description* 585 586listens for a connection on a uv handle. 587 588##### *Parameters* 589 590*resource $handle*: uv resource handle (tcp, udp and pipe) 591 592*long $backlog*: backlog 593 594*callable $callback*: this callback parameter expects (resource $connection, long $status) 595 596##### *Return Value* 597 598*void *: 599 600##### *Example* 601 602````php 603<?php 604$tcp = uv_tcp_init(); 605 606uv_tcp_bind($tcp, uv_ip4_addr('0.0.0.0',9999)); 607 608uv_listen($tcp,100, function($server, $status){ 609 $client = uv_tcp_init(); 610 uv_accept($server, $client); 611 uv_read_start($client, function($socket, $nread, $buffer) use ($server){ 612 var_dump($buffer); 613 uv_close($socket); 614 uv_close($server); 615 }); 616}); 617uv_run(); 618 619```` 620 621 622 623### void uv_tcp_connect(resource $handle, resource $ipv4_addr, callable $callback) 624 625##### *Description* 626 627connect to specified ip address and port. 628 629##### *Parameters* 630 631*resource $handle*: requires `uv_tcp_init()` resource. 632*resource $ipv4_addr*: requires uv_sockaddr resource. 633*callable $callback*: callable variables. 634 635##### *Return Value* 636 637*void*: 638 639##### *Example* 640 641````php 642<?php 643$tcp = uv_tcp_init(); 644uv_tcp_connect($tcp, uv_ip4_addr("127.0.0.1",8080), function($tcp_handle, $status){ 645 uv_close($tcp_handle); 646}); 647 648uv_run(); 649```` 650 651 652### void uv_tcp_connect6(resource $handle, resource $ipv6_addr, callable $callback) 653 654##### *Description* 655 656connect to specified ip address and port. 657 658##### *Parameters* 659 660*resource $handle*: requires `uv_tcp_init()` resource. 661*resource $ipv4_addr*: requires uv_sockaddr resource. 662*callable $callback*: callable variables. 663 664##### *Return Value* 665 666*void*: 667 668##### *Example* 669 670````php 671<?php 672$tcp = uv_tcp_init(); 673uv_tcp_connect($tcp, uv_ip6_addr("::1",8080), function($tcp_handle, $status){ 674 uv_close($tcp_handle); 675}); 676 677uv_run(); 678```` 679 680 681### resource uv_timer_init([resource $loop]) 682 683##### *Description* 684 685initialize timer handle. 686 687##### *Parameters* 688 689*resource $loop*: uv_loop resource. 690 691##### *Return Value* 692 693*resource $timer*: initialized timer resource. 694 695##### *Example* 696 697````php 698<?php 699$timer = uv_timer_init(); 700```` 701 702 703### void uv_timer_start(resource $timer, long $timeout, long $repeat, callable $callback) 704 705##### *Description* 706 707initialize timer handle. 708 709##### *Parameters* 710 711*resource $loop*: uv_loop resource. 712 713*long $timeout*: periodical event starts when after this timeout. 1000 is 1 sec. 714 715*long $repeat*: repeat interval. 1000 is 1 sec. 716 717##### *Return Value* 718 719*void: 720 721##### *Example* 722 723````php 724<?php 725$timer = uv_timer_init(); 726$after_1_second = 1000; 727$period_is_1_second = 1000; 728uv_timer_start($timer, $after_1_seconds, $period_is_1_second, function($timer, $status){ 729 echo "Hello\n"; 730}); 731 732uv_run(); 733```` 734 735 736### void uv_timer_stop(resource $timer) 737 738##### *Description* 739 740stop specified timer. 741 742##### *Parameters* 743 744*resource $timer*: uv timer resource. 745 746##### *Return Value* 747 748*long $retval*: 749 750##### *Example* 751 752````php 753<?php 754$timer = uv_timer_init(); 755uv_timer_start($timer, 100, 100, function($timer, $status){ 756 echo "Hello\n"; 757 uv_timer_stop($timer); 758}); 759 760uv_run(); 761```` 762 763 764### void uv_timer_again(resource $timer) 765 766##### *Description* 767 768restart timer. 769 770##### *Parameters* 771 772*resource $timer*: uv_timer resource. 773 774##### *Return Value* 775 776*void*: 777 778##### *Example* 779 780 781 782### void uv_timer_set_repeat(resource $timer, long $repeat) 783 784##### *Description* 785 786set repeat count. 787 788##### *Parameters* 789 790*resource $uv_timer*: uv_timer resource 791 792*long $repeat*: repeat count 793 794##### *Return Value* 795 796*void*: 797 798##### *Example* 799 800 801 802### long uv_timer_get_repeat(resource $timer) 803 804##### *Description* 805 806returns repeat interval. 807 808##### *Parameters* 809 810*resource $uv_timer*: uv_timer resource 811 812##### *Return Value* 813 814*long $repeat_time*: 815 816##### *Example* 817 818 819 820### resource uv_idle_init([resource $loop]) 821 822##### *Description* 823 824initialize uv idle handle. 825 826##### *Parameters* 827 828*resource $loop*: uv_loop resource. 829 830##### *Return Value* 831 832*resource $idle*: initialized idle handle. 833 834##### *Example* 835 836````php 837<?php 838$loop = uv_default_loop(); 839$idle = uv_idle_init($loop); 840```` 841 842 843 844### void uv_idle_start(resource $idle, callable $callback) 845 846##### *Description* 847 848start idle callback. 849 850##### *Parameters* 851 852*resource $idle*: uv_idle resource. 853*callable $callback*: idle callback. 854 855##### *Return Value* 856 857*long result*: 858 859##### *Example* 860 861````php 862<?php 863$loop = uv_default_loop(); 864$idle = uv_idle_init(); 865 866$i = 0; 867uv_idle_start($idle, function($idle_handle, $stat) use (&$i){ 868 echo "count: {$i}" . PHP_EOL; 869 $i++; 870 871 if ($i > 3) { 872 uv_idle_stop($idle); 873 } 874 sleep(1); 875}); 876 877uv_run(); 878```` 879 880 881 882### void uv_idle_stop(resource $idle) 883 884##### *Description* 885 886stop idle callback. 887 888##### *Parameters* 889 890*resource $idle*: uv_idle resource. 891 892##### *Return Value* 893 894*long result*: 895 896##### *Example* 897 898````php 899<?php 900$loop = uv_default_loop(); 901$idle = uv_idle_init(); 902 903$i = 0; 904uv_idle_start($idle, function($idle_handle, $stat) use (&$i){ 905 echo "count: {$i}" . PHP_EOL; 906 $i++; 907 908 if ($i > 3) { 909 uv_idle_stop($idle); 910 } 911 sleep(1); 912}); 913 914uv_run(); 915```` 916 917 918 919### void uv_getaddrinfo(resource $loop, callable $callback, string $node, string $service, array $hints) 920 921 922### resource uv_tcp_init([resource $loop]) 923 924##### *Description* 925 926create a tcp socket. 927 928##### *Parameters* 929 930*resource $loop*: loop resource or null. if not specified loop resource then use uv_default_loop resource. 931 932##### *Return Value* 933 934*resource php_uv*: uv resource which initialized for tcp. 935 936##### *Example* 937 938````php 939<?php 940$tcp = uv_tcp_init(); 941```` 942 943 944 945### resource uv_default_loop() 946 947##### *Description* 948 949return default loop handle. 950 951##### *Parameters* 952 953##### *Return Value* 954 955*resource $loop*: 956 957##### *Example* 958 959````php 960<?php 961$loop = uv_default_loop(); 962```` 963 964 965 966### resource uv_loop_new() 967 968##### *Description* 969 970create a new loop handle. 971 972##### *Parameters* 973 974##### *Return Value* 975 976*resource $loop*: 977 978##### *Example* 979 980````php 981<?php 982$loop = uv_loop_new(); 983```` 984 985 986 987### resource uv_udp_init([resource $loop]) 988 989##### *Description* 990 991create a udp socket. 992 993##### *Parameters* 994 995*resource $loop*: loop resource or null. if not specified loop resource then use uv_default_loop resource. 996 997##### *Return Value* 998 999*resource php_uv*: uv resource which initialized for udp. 1000 1001##### *Example* 1002 1003````php 1004<?php 1005$udp = uv_udp_init(); 1006```` 1007 1008 1009 1010### void uv_udp_bind(resource $resource, resource $address, long $flags) 1011 1012##### *Description* 1013 1014listens for a connection on a uv udp handle. 1015 1016##### *Parameters* 1017 1018*resource $handle*: uv resource handle (udp) 1019 1020*resource $uv_ip_addr*: uv sockaddr(ipv4) resource. 1021 1022*long $flags*: unused. 1023 1024##### *Return Value* 1025 1026*void *: 1027 1028##### *Example* 1029 1030````php 1031<?php 1032$udp = uv_udp_init(); 1033var_dump($udp); 1034 1035uv_udp_bind($udp, uv_ip4_addr('0.0.0.0',10000)); 1036 1037uv_udp_recv_start($udp,function($stream, $nread, $buffer){ 1038 echo "recv:" . $buffer; 1039 1040 uv_close($stream); 1041}); 1042 1043$uv = uv_udp_init(); 1044uv_udp_send($uv, "Hello", uv_ip4_addr("0.0.0.0",10000),function($uv, $s){ 1045 echo "success" . PHP_EOL; 1046 uv_close($uv); 1047}); 1048 1049uv_run(); 1050```` 1051 1052 1053 1054### void uv_udp_bind6(resource $resource, resource $address, long $flags) 1055 1056##### *Description* 1057 1058listens for a connection on a uv udp handle. 1059 1060##### *Parameters* 1061 1062*resource $handle*: uv resource handle (udp) 1063 1064*resource $uv_ip_addr*: uv sockaddr(ipv6) resource. 1065 1066*long $flags*: Should be 0 or UV::UDP_IPV6ONLY 1067 1068##### *Return Value* 1069 1070*void *: 1071 1072##### *Example* 1073 1074````php 1075<?php 1076$udp = uv_udp_init(); 1077var_dump($udp); 1078 1079uv_udp_bind6($udp, uv_ip6_addr('::1',10000)); 1080 1081uv_udp_recv_start($udp,function($stream, $nread, $buffer){ 1082 echo "recv:" . $buffer; 1083 1084 uv_close($stream); 1085}); 1086 1087$uv = uv_udp_init(); 1088uv_udp_send6($uv, "Hello", uv_ip6_addr("::1",10000),function($uv, $s){ 1089 echo "success" . PHP_EOL; 1090 uv_close($uv); 1091}); 1092 1093uv_run(); 1094```` 1095 1096 1097 1098### void uv_udp_recv_start(resource $handle, callable $callback) 1099 1100##### *Description* 1101 1102start receive callback. 1103 1104##### *Parameters* 1105 1106*resource $handle*: uv resource handle (udp) 1107 1108*callable $callback*: this callback parameter expects (resource $stream, long $nread, string $buffer). 1109 1110##### *Return Value* 1111 1112*void *: 1113 1114##### *Example* 1115 1116````php 1117<?php 1118$udp = uv_udp_init(); 1119var_dump($udp); 1120 1121uv_udp_bind6($udp, uv_ip6_addr('::1',10000)); 1122 1123uv_udp_recv_start($udp,function($stream, $nread, $buffer){ 1124 echo "recv:" . $buffer; 1125 1126 uv_close($stream); 1127}); 1128 1129$uv = uv_udp_init(); 1130uv_udp_send6($uv, "Hello", uv_ip6_addr("::1",10000),function($uv, $s){ 1131 echo "success" . PHP_EOL; 1132 uv_close($uv); 1133}); 1134 1135uv_run(); 1136```` 1137 1138 1139 1140### void uv_udp_recv_stop(resource $handle) 1141 1142##### *Description* 1143 1144stop receive callback. 1145 1146##### *Parameters* 1147 1148*resource $handle*: uv resource handle (udp) 1149 1150##### *Return Value* 1151 1152*void *: 1153 1154 1155 1156### long uv_udp_set_membership(resource $handle, string $multicast_addr, string $interface_addr, long $membership) 1157 1158##### *Description* 1159 1160join or leave udp muticast group.. 1161 1162##### *Parameters* 1163 1164*resource $handle*: uv resource handle (udp) 1165 1166*string $multicast_addr*: multicast address 1167 1168*string $interface_addr*: interface address 1169 1170*long $membership*: UV::JOIN_GROUP or UV::LEAVE_GROUP 1171 1172##### *Return Value* 1173 1174*long *: result code 1175 1176##### *Example* 1177 1178 1179 1180### void uv_udp_set_multicast_loop(resource $handle, long $enabled) 1181 1182##### *Description* 1183 1184set multicast loop 1185 1186##### *Parameters* 1187 1188*resource $handle*: uv resource handle (udp) 1189 1190*long $enabled*: 1191 1192##### *Return Value* 1193 1194*void*: 1195 1196##### *Example* 1197 1198 1199 1200### void uv_udp_set_multicast_ttl(resource $handle, long $ttl) 1201 1202##### *Description* 1203 1204set multicast ttl 1205 1206##### *Parameters* 1207 1208*resource $handle*: uv resource handle (udp) 1209 1210*long $ttl*: multicast ttl 1211 1212##### *Return Value* 1213 1214*void*: 1215 1216##### *Example* 1217 1218 1219 1220### void uv_udp_set_broadcast(resource $handle, bool $enabled) 1221 1222##### *Description* 1223 1224set udp broadcast 1225 1226##### *Parameters* 1227 1228*resource $handle*: uv resource handle (udp) 1229 1230*long $enabled*: 1231 1232##### *Return Value* 1233 1234*void*: 1235 1236##### *Example* 1237 1238 1239 1240### void uv_udp_send(resource $handle, string $data, resource $uv_addr, callable $callback) 1241 1242##### *Description* 1243 1244send buffer to specified address. 1245 1246##### *Parameters* 1247 1248*resource $handle*: uv resource handle (udp) 1249 1250*string $data*: data 1251 1252*resource uv_addr*: uv_ip4_addr 1253 1254*callable $callback*: this callback parameter expects (resource $stream, long $status). 1255 1256##### *Return Value* 1257 1258*void *: 1259 1260##### *Example* 1261 1262````php 1263<?php 1264$udp = uv_udp_init(); 1265var_dump($udp); 1266 1267uv_udp_bind($udp, uv_ip4_addr('::1',10000)); 1268 1269uv_udp_recv_start($udp,function($stream, $nread, $buffer){ 1270 echo "recv:" . $buffer; 1271 1272 uv_close($stream); 1273}); 1274 1275$uv = uv_udp_init(); 1276uv_udp_send($uv, "Hello", uv_ip4_addr("::1",10000),function($uv, $s){ 1277 echo "success" . PHP_EOL; 1278 uv_close($uv); 1279}); 1280 1281uv_run(); 1282```` 1283 1284 1285### void uv_udp_send6(resource $handle, string $data, resource $uv_addr6, callable $callback) 1286 1287##### *Description* 1288 1289send buffer to specified address. 1290 1291##### *Parameters* 1292 1293*resource $handle*: uv resource handle (udp) 1294 1295*string $data*: data 1296 1297*resource uv_addr*: uv_ip6_addr 1298 1299*callable $callback*: this callback parameter expects (resource $stream, long $status). 1300 1301##### *Return Value* 1302 1303*void *: 1304 1305##### *Example* 1306 1307````php 1308<?php 1309$udp = uv_udp_init(); 1310var_dump($udp); 1311 1312uv_udp_bind6($udp, uv_ip6_addr('::1',10000)); 1313 1314uv_udp_recv_start($udp,function($stream, $nread, $buffer){ 1315 echo "recv:" . $buffer; 1316 1317 uv_close($stream); 1318}); 1319 1320$uv = uv_udp_init(); 1321uv_udp_send6($uv, "Hello", uv_ip6_addr("::1",10000),function($uv, $s){ 1322 echo "success" . PHP_EOL; 1323 uv_close($uv); 1324}); 1325 1326uv_run(); 1327```` 1328 1329 1330### bool uv_is_active(resource $handle) 1331 1332 1333### bool uv_is_readable(resource $handle) 1334 1335 1336### bool uv_is_writable(resource $handle) 1337 1338 1339### bool uv_walk(resource $loop, callable $closure[, array $opaque]) 1340 1341##### *TODO* 1342 1343* implement this. 1344 1345 1346 1347### long uv_guess_handle(resource $uv) 1348 1349 1350### long uv_handle_type(resource $uv) 1351 1352##### *Description* 1353 1354returns current uv type. (this is not libuv function. util for php-uv) 1355 1356##### *Parameters* 1357 1358*resource $uv_handle*: uv_handle 1359 1360##### *Return Value* 1361 1362*long $handle_type*: should return UV::IS_UV_* constatns. e.g) UV::IS_UV_TCP 1363 1364##### *Example* 1365 1366````php 1367<?php 1368$tcp = uv_tcp_init(); 1369var_dump(uv_handle_type($tcp)); 1370```` 1371 1372##### *Note* 1373 1374* this may change. 1375 1376 1377 1378### resource uv_pipe_init(resource $loop, long $ipc) 1379 1380##### *Description* 1381 1382initialize pipe resource 1383 1384##### *Parameters* 1385 1386*resource $uv_loop*: uv_loop resource 1387 1388*bool $ipc*: when this pipe use for ipc, please set true otherwise false. 1389 1390##### *Return Value* 1391 1392*resource $uv_pipe*: 1393 1394##### *Example* 1395 1396````php 1397<?php 1398$pipe = uv_pipe_init(uv_default_loop(), true); 1399```` 1400 1401 1402 1403### void uv_pipe_open(resource $handle, long $pipe) 1404 1405##### *Description* 1406 1407open a pipe resource. 1408 1409##### *Parameters* 1410 1411*resource $uv_handle*: uv pipe handle 1412 1413*long $pipe: dunnno. maybe file descriptor. 1414 1415##### *Return Value* 1416 1417*void*: 1418 1419##### *Example* 1420 1421 1422 1423### long uv_pipe_bind(resource $handle, string $name) 1424 1425##### *Description* 1426 1427create a named pipe. 1428 1429##### *Parameters* 1430 1431*resource $uv_handle*: uv pipe handle 1432 1433*long $pipe: dunnno. maybe file descriptor. 1434 1435##### *Return Value* 1436 1437*void*: 1438 1439##### *Example* 1440 1441 1442 1443### void uv_pipe_connect(resource $handle, string $path, callable $callback) 1444 1445##### *Description* 1446 1447connect to named pipe. 1448 1449##### *Parameters* 1450 1451*resource $uv_handle*: uv pipe handle 1452 1453*string $path: named pipe path 1454 1455*callable $callback: this callback parameter expects (resource $pipe, long $status) 1456 1457##### *Return Value* 1458 1459*void*: 1460 1461##### *Example* 1462 1463````php 1464<?php 1465b = uv_pipe_init(uv_default_loop(), 0); 1466uv_pipe_connect($b, PIPE_PATH, function($a,$b){ 1467 uv_write($b,"Hello", function($stream,$stat){ 1468 uv_close($stream); 1469 }); 1470}); 1471 1472uv_run(); 1473```` 1474 1475 1476 1477### void uv_pipe_pending_instances(resource $handle, long $count) 1478 1479 1480### resource uv_ares_init_options(resource $loop, array $options, long $optmask) 1481 1482 1483### void ares_gethostbyname(resource $handle, string $name, long $flag, callable $callback) 1484 1485 1486### array uv_loadavg(void) 1487 1488##### *Description* 1489 1490retunrs current loadaverage. 1491 1492##### *Parameters* 1493 1494##### *Return Value* 1495 1496*array $loadaverage*: 1497 1498##### *Example* 1499 1500````php 1501<?php 1502var_dump(uv_loadavg()); 1503//array(3) { 1504// [0]=> 1505// float(1.7421875) 1506// [1]=> 1507// float(1.427734375) 1508// [2]=> 1509// float(1.3955078125) 1510//} 1511```` 1512 1513##### *Note* 1514 1515returns array on windows box. (does not support load average on windows) 1516 1517 1518 1519### double uv_uptime(void) 1520 1521##### *Description* 1522 1523returns current uptime. 1524 1525##### *Parameters* 1526 1527##### *Return Value* 1528 1529*long $uptime*: 1530 1531##### *Example* 1532 1533````php 1534<?php 1535var_dump(uv_uptime()); 1536//float(1247516) 1537```` 1538 1539 1540 1541### long uv_get_free_memory(void) 1542 1543##### *Description* 1544 1545returns current free memory size. 1546 1547##### *Parameters* 1548 1549##### *Return Value* 1550 1551*long $free*: 1552 1553##### *Example* 1554 1555````php 1556<?php 1557var_dump(uv_get_free_memory()); 1558//int(135860224) 1559```` 1560 1561 1562 1563### long uv_get_total_memory(void) 1564 1565##### *Description* 1566 1567returns total memory size. 1568 1569##### *Parameters* 1570 1571##### *Return Value* 1572 1573*long $free*: 1574 1575##### *Example* 1576 1577````php 1578<?php 1579var_dump(uv_get_total_memory()); 1580//int(8589934592) 1581```` 1582 1583 1584 1585### long uv_hrtime(void) 1586 1587##### *TODO* 1588 1589check implmentation 1590 1591 1592 1593### string uv_exepath(void) 1594 1595##### *Description* 1596 1597returns current exepath. basically this will returns current php path. 1598 1599##### *Parameters* 1600 1601##### *Return Value* 1602 1603*string $exepath*: 1604 1605##### *Example* 1606 1607````php 1608<?php 1609var_dump(uv_exepath()); 1610//string(53) "/Users/chobie/.phpenv/versions/5.4.1-zts-goto/bin/php" 1611``` 1612 1613 1614 1615### string uv_cwd(void) 1616 1617##### *Description* 1618 1619returns current working directory. 1620 1621##### *Parameters* 1622 1623##### *Return Value* 1624 1625*string $cwd*: 1626 1627##### *Example* 1628 1629````php 1630<?php 1631var_dump(uv_cwd()); 1632//string(24) "/Users/chobie/src/php-uv" 1633```` 1634 1635 1636 1637### array uv_cpu_info(void) 1638 1639##### *Description* 1640 1641returns current cpu informations 1642 1643. 1644 1645##### *Parameters* 1646 1647##### *Return Value* 1648 1649*array $cpu_info*: 1650 1651##### *Example* 1652 1653````php 1654<?php 1655var_dump(uv_cpu_info()); 1656//array(8) { 1657// [0]=> 1658// array(3) { 1659// ["model"]=> 1660// string(13) "MacBookPro8,2" 1661// ["speed"]=> 1662// int(2200) 1663// ["times"]=> 1664// array(5) { 1665// ["sys"]=> 1666// int(69952140) 1667// ["user"]=> 1668// int(38153450) 1669// ["idle"]=> 1670// int(776709120) 1671// ["irq"]=> 1672// int(0) 1673// ["nice"]=> 1674// int(0) 1675// } 1676// }... 1677```` 1678 1679 1680 1681### array uv_interface_addresses(void) 1682 1683### resource uv_stdio_new(zval $fd, long $flags) 1684 1685### resource uv_spawn(resource $loop, string $command, array $args, array $stdio, string $cwd, array $env = array(), callable $callback [,long $flags, array $options]) 1686 1687 1688### void uv_process_kill(resource $handle, long $signal) 1689 1690##### *Description* 1691 1692send signal to specified uv process resource. 1693 1694##### *Parameters* 1695 1696*resource $handle*: uv resource handle (process) 1697 1698*long $signal*: 1699 1700##### *Return Value* 1701 1702*void*: 1703 1704##### *Example* 1705 1706 1707 1708### void uv_kill(long $pid, long $signal) 1709 1710##### *Description* 1711 1712send signal to specified pid. 1713 1714##### *Parameters* 1715 1716*long $pid*: process id 1717 1718*long $signal*: 1719 1720##### *Return Value* 1721 1722*void*: 1723 1724##### *Example* 1725 1726 1727 1728### bool uv_chdir(string $directory) 1729 1730##### *Description* 1731 1732change working directory. 1733 1734##### *Parameters* 1735 1736*string $directory*: 1737 1738##### *Return Value* 1739 1740*bool *: 1741 1742##### *Example* 1743 1744 1745 1746### resource uv_rwlock_init(void) 1747 1748##### *Description* 1749 1750initialize rwlock resource 1751 1752##### *Parameters* 1753 1754##### *Return Value* 1755 1756*resource $rwlock*: returns uv rwlock resource 1757 1758##### *Example* 1759 1760 1761 1762### uv_rwlock_rdlock(resource $handle) 1763 1764##### *Description* 1765 1766set read lock 1767 1768##### *Parameters* 1769 1770*resource $handle*: uv resource handle (uv rwlock) 1771 1772##### *Return Value* 1773 1774*void *: 1775 1776##### *Example* 1777 1778 1779 1780### bool uv_rwlock_tryrdlock(resource $handle) 1781 1782##### *TODO* 1783 1784* implemnt this correctly 1785 1786 1787 1788### void uv_rwlock_rdunlock(resource $handle) 1789 1790##### *Description* 1791 1792unlock read lock 1793 1794##### *Parameters* 1795 1796*resource $handle*: uv resource handle (uv rwlock) 1797 1798##### *Return Value* 1799 1800*void*: 1801 1802##### *Example* 1803 1804 1805 1806### uv_rwlock_wrlock(resource $handle) 1807 1808##### *Description* 1809 1810set write lock 1811 1812##### *Parameters* 1813 1814*resource $handle*: uv resource handle (uv rwlock) 1815 1816##### *Return Value* 1817 1818*void *: 1819 1820##### *Example* 1821 1822 1823 1824### uv_rwlock_trywrlock(resource $handle) 1825 1826##### *TODO* 1827 1828* implement this correctly 1829 1830 1831 1832### uv_rwlock_wrunlock(resource $handle) 1833 1834##### *Description* 1835 1836unlock write lock 1837 1838##### *Parameters* 1839 1840*resource $handle*: uv resource handle (uv rwlock) 1841 1842##### *Return Value* 1843 1844*void*: 1845 1846##### *Example* 1847 1848 1849 1850### uv_lock uv_mutex_init(void) 1851 1852##### *Description* 1853 1854initialize mutex resource 1855 1856##### *Parameters* 1857 1858##### *Return Value* 1859 1860*resource $uv_mutex*: uv mutex resource 1861 1862##### *Example* 1863 1864 1865 1866### void uv_mutex_lock(uv_lock $lock) 1867 1868##### *Description* 1869 1870lock mutex 1871 1872##### *Parameters* 1873 1874*resource $handle*: uv resource handle (uv mutex) 1875 1876##### *Return Value* 1877 1878*void*: 1879 1880##### *Example* 1881 1882 1883 1884### bool uv_mutex_trylock(uv_lock $lock) 1885 1886##### *TODO* 1887 1888* implement this correctly 1889 1890 1891 1892### uv_lock uv_sem_init(long $value) 1893 1894##### *Description* 1895 1896initialize semaphore resource 1897 1898##### *Parameters* 1899 1900##### *Return Value* 1901 1902*resource $uv_sem*: 1903 1904##### *Example* 1905 1906 1907 1908### void uv_sem_post(uv_lock $sem) 1909 1910##### *Description* 1911 1912post semaphore 1913 1914##### *Parameters* 1915 1916*resource $handle*: uv resource handle (uv sem) 1917 1918##### *Return Value* 1919 1920*void*: 1921 1922##### *Example* 1923 1924 1925 1926### void uv_sem_wait(uv_lock $sem) 1927 1928##### *Todo* 1929 1930* implemnt this correctly 1931 1932 1933 1934### void uv_sem_trywait(uv_lock $sem) 1935 1936##### *Todo* 1937 1938* implment this correctly 1939 1940 1941 1942### resource uv_prepare_init(resource $loop) 1943 1944##### *Description* 1945 1946initialize prepare resource 1947 1948##### *Parameters* 1949 1950*resource $loop*: uv loop handle 1951 1952##### *Return Value* 1953 1954*resource $uv_prepare*: 1955 1956##### *Example* 1957 1958````php 1959<?php 1960$prepare = uv_prepare_init(uv_default_loop()); 1961```` 1962 1963 1964 1965### void uv_prepare_start(resource $handle, callable $callback) 1966 1967##### *Description* 1968 1969setup prepare loop callback. (pre loop callback) 1970 1971##### *Parameters* 1972 1973*resource $handle*: uv resource handle (prepare) 1974 1975*callable $callback*: this callback parameter expects (resource $prepare, long $status). 1976 1977##### *Return Value* 1978 1979*long *: 1980 1981##### *Example* 1982````php 1983 1984<?php 1985$loop = uv_default_loop(); 1986$prepare = uv_prepare_init($loop); 1987 1988uv_prepare_start($prepare, function($rsc, $status){ 1989 echo "Hello"; 1990 uv_unref($rsc); 1991}); 1992 1993uv_run(); 1994```` 1995 1996 1997### void uv_prepare_stop(resource $handle) 1998 1999##### *Description* 2000 2001stop prepare callback 2002 2003##### *Parameters* 2004 2005*resource $prepare*: uv resource handle (prepare) 2006 2007##### *Return Value* 2008 2009*long*: 2010 2011 2012 2013### resource uv_check_init([resource $loop]) 2014 2015##### *Description* 2016 2017setup check resource 2018 2019##### *Parameters* 2020 2021*resource $loop*: uv loop handle 2022 2023##### *Return Value* 2024 2025*resource uv_check*: 2026 2027##### *Example* 2028````php 2029<?php 2030$check = uv_check_init(uv_default_loop()); 2031```` 2032 2033 2034### void uv_check_start(resource $handle, callable $callback) 2035 2036##### *Description* 2037 2038stats check loop callback. (after loop callback) 2039 2040##### *Parameters* 2041 2042*resource $handle*: uv resource handle (check) 2043 2044*callable $callback*: this callback parameter expects (resource $check, long $status). 2045 2046##### *Return Value* 2047 2048*long *: 2049 2050##### *Example* 2051````php 2052<?php 2053$loop = uv_default_loop(); 2054$check = uv_check_init($loop); 2055 2056$idle = uv_idle_init(); 2057 2058$i = 0; 2059uv_idle_start($idle, function($stat) use (&$i, $idle, $loop){ 2060 echo "count: {$i}" . PHP_EOL; 2061 $i++; 2062 2063 if ($i > 3) { 2064 uv_idle_stop($idle); 2065 } 2066 sleep(1); 2067}); 2068 2069uv_check_start($check, function($check, $status){ 2070 echo "Hello"; 2071 uv_check_stop($check); 2072}); 2073 2074uv_run(); 2075```` 2076 2077 2078### void uv_check_stop(resource $handle) 2079 2080##### *Description* 2081 2082stop check callback 2083 2084##### *Parameters* 2085 2086*resource $check*: uv resource handle (check) 2087 2088##### *Return Value* 2089 2090*void *: 2091 2092 2093 2094### resource uv_async_init(resource $loop, callable $callback) 2095 2096##### *Description* 2097 2098setup async callback 2099 2100##### *Parameters* 2101 2102*resource $loop*: uv loop resource 2103 2104*callback $callback*: 2105 2106##### *Return Value* 2107 2108*resource *: uv async resource 2109 2110##### *Example* 2111 2112 2113 2114### void uv_async_send(resource $handle) 2115 2116##### *Description* 2117 2118send async callback immidiately 2119 2120##### *Parameters* 2121 2122*resource $handle*: uv async handle 2123 2124##### *Return Value* 2125 2126*void*: 2127 2128##### *Example* 2129 2130 2131### void uv_queue_work(resource $loop, callable $callback, callable $after_callback) 2132 2133##### *Description* 2134 2135execute callbacks in another thread (requires Thread Safe enabled PHP) 2136 2137 2138### resource uv_fs_open(resource $loop, string $path, long $flag, long $mode, callable $callback) 2139 2140##### *Description* 2141 2142open specified file 2143 2144##### *Parameters* 2145 2146*resource $loop*: uv_loop resource. 2147 2148*string $path*: file path 2149 2150*long $flag*: file flag. this should be UV::O_RDONLY and some constants flag. 2151 2152*long $mode*: mode flag. this should be UV::S_IRWXU and some mode flag. 2153 2154*callable $calback*: this callback parameter expects (resource $stream) 2155 2156 2157##### *Return Value* 2158 2159*void*: 2160 2161##### *Example* 2162 2163````php 2164<?php 2165uv_fs_open(uv_default_loop(),"/tmp/hello", 2166 UV::O_WRONLY | UV::O_CREAT | UV::O_APPEND, 2167 UV::S_IRWXU | UV::S_IRUSR, 2168 function($r){ 2169 2170 uv_fs_write(uv_default_loop(),$r,"hello",0, function($a) use ($r){ 2171 uv_fs_fdatasync(uv_default_loop(),$r,function(){ 2172 echo "fsync finished"; 2173 }); 2174 }); 2175}); 2176 2177uv_run(); 2178```` 2179 2180 2181 2182### void uv_fs_read(resource $loop, zval $fd, long $offset, long $length, callable $callback) 2183 2184##### *Description* 2185 2186async read. 2187 2188##### *Parameters* 2189 2190*resource $loop*: uv loop handle 2191 2192*zval $fd*: this expects long $fd, resource $php_stream or resource $php_socket. 2193 2194*long $offset*: the offset position in the file at which reading should commence. 2195 2196*long $length*: the length in bytes that should be read starting at position *$offset*. 2197 2198*resource $callback*: this callback parameter expects (zval $fd, long $nread, string $buffer). 2199 2200##### *Return Value* 2201 2202*void *: 2203 2204 2205 2206### void uv_fs_close(resource $loop, zval $fd, callable $callback) 2207 2208##### *Description* 2209 2210close specified file descriptor. 2211 2212##### *Parameters* 2213 2214*resource $loop*: uv_loop resource. 2215 2216*zval $fd*: file descriptor. this expects long $fd, resource $php_stream or resource $php_socket. 2217 2218*callable $calback*: this callback parameter expects (resource $stream) 2219 2220##### *Return Value* 2221 2222*void*: 2223 2224##### *Example* 2225 2226##### *todo* 2227 2228* handling PHP's stream and socket correctly. 2229 2230 2231 2232### void uv_fs_write(resource $loop, zval $fd, string $buffer, long $offset, callable $callback) 2233 2234##### *Description* 2235 2236write buffer to specified file descriptor. 2237 2238##### *Parameters* 2239 2240*resource $loop*: uv_loop resource. 2241 2242*zval $fd*: file descriptor. this expects long $fd, resource $php_stream or resource $php_socket. 2243 2244*string $buffer*: buffer. 2245 2246*callable $calback*: this callback parameter expects (resource $stream, long $result) 2247 2248##### *Return Value* 2249 2250*void*: 2251 2252##### *Example* 2253 2254 2255 2256### void uv_fs_fsync(resource $loop, zval $fd, callable $callback) 2257 2258##### *Description* 2259 2260async fsync 2261 2262##### *Parameters* 2263 2264*resource $handle*: uv loop handle 2265 2266*zval $fd*: 2267 2268 2269*callable $callback*: 2270 2271##### *Return Value* 2272 2273*void*: 2274 2275##### *Example* 2276 2277 2278 2279### void uv_fs_fdatasync(resource $loop, zval $fd, callable $callback) 2280 2281##### *Description* 2282 2283async fdatasync 2284 2285##### *Parameters* 2286 2287*resource $handle*: uv loop handle 2288 2289*zval $fd*: 2290 2291*callable $callback*: 2292 2293##### *Return Value* 2294 2295*void*: 2296 2297##### *Example* 2298 2299 2300### void uv_fs_ftruncate(resource $loop, zval $fd, long $offset, callable $callback) 2301 2302##### *Description* 2303 2304async ftruncate 2305 2306##### *Parameters* 2307 2308*resource $handle*: uv loop handle 2309 2310*zval $fd*: 2311 2312*long $offset*: 2313 2314*callable $callback*: 2315 2316##### *Return Value* 2317 2318*void*: 2319 2320##### *Example* 2321 2322 2323### void uv_fs_mkdir(resource $loop, string $path, long $mode, callable $callback) 2324 2325##### *Description* 2326 2327async mkdir 2328 2329##### *Parameters* 2330 2331*resource $handle*: uv loop handle 2332 2333*string $path*: 2334 2335*long $mode*: 2336 2337*callable $callback*: 2338 2339##### *Return Value* 2340 2341*void*: 2342 2343##### *Example* 2344 2345 2346### void uv_fs_rmdir(resource $loop, string $path, callable $callback) 2347 2348##### *Description* 2349 2350async rmdir 2351 2352##### *Parameters* 2353 2354*resource $handle*: uv loop handle 2355 2356*string $path*: 2357 2358*callable $callback*: 2359 2360##### *Return Value* 2361 2362*void*: 2363 2364##### *Example* 2365 2366 2367### void uv_fs_unlink(resource $loop, string $path, callable $callback) 2368 2369##### *Description* 2370 2371async unlink 2372 2373##### *Parameters* 2374 2375*resource $handle*: uv loop handle 2376 2377*string $path*: 2378 2379*callable $callback*: 2380 2381##### *Return Value* 2382 2383*void*: 2384 2385##### *Example* 2386 2387 2388### void uv_fs_rename(resource $loop, string $from, string $to, callable $callback) 2389 2390##### *Description* 2391 2392async rename 2393 2394##### *Parameters* 2395 2396*resource $handle*: uv loop handle 2397 2398*string $from*: 2399 2400*string $to*: 2401 2402*callable $callback*: 2403 2404##### *Return Value* 2405 2406*void*: 2407 2408##### *Example* 2409 2410 2411 2412### void uv_fs_utime(resource $loop, string $path, long $utime, long $atime, callable $callback) 2413 2414##### *Description* 2415 2416async utime 2417 2418##### *Parameters* 2419 2420*resource $handle*: uv loop handle 2421 2422*string $path*: 2423 2424*long $utime*: 2425 2426*long $atime*: 2427 2428*callable $callback*: 2429 2430##### *Return Value* 2431 2432*void*: 2433 2434##### *Example* 2435 2436 2437 2438### void uv_fs_futime(resource $loop, zval $fd, long $utime, long $atime callable $callback) 2439 2440##### *Description* 2441 2442async futime 2443 2444##### *Parameters* 2445 2446*resource $handle*: uv loop handle 2447 2448*zval $fd*: 2449 2450*long $utime*: 2451 2452*long $atime*: 2453 2454*callable $callback*: 2455 2456##### *Return Value* 2457 2458*void*: 2459 2460##### *Example* 2461 2462 2463### void uv_fs_chmod(resource $loop, string $path, long $mode, callable $callback) 2464 2465##### *Description* 2466 2467async chmod 2468 2469##### *Parameters* 2470 2471*resource $handle*: uv loop handle 2472 2473*string $path*: 2474 2475*long $mode*: 2476 2477*callable $callback*: 2478 2479##### *Return Value* 2480 2481*void*: 2482 2483##### *Example* 2484 2485 2486### void uv_fs_fchmod(resource $loop, zval $fd, long $mode, callable $callback) 2487 2488##### *Description* 2489 2490async fchmod 2491 2492##### *Parameters* 2493 2494*resource $handle*: uv loop handle 2495 2496*zval $fd*: 2497 2498*long $mode*: 2499 2500*callable $callback*: 2501 2502##### *Return Value* 2503 2504*void*: 2505 2506##### *Example* 2507 2508 2509### void uv_fs_chown(resource $loop, string $path, long $uid, long $gid, callable $callback) 2510 2511##### *Description* 2512 2513async chown 2514 2515##### *Parameters* 2516 2517*resource $handle*: uv loop handle 2518 2519*string $paht*: 2520 2521*long $uid*: 2522 2523*long $gid*: 2524 2525*callable $callback*: 2526 2527##### *Return Value* 2528 2529*void*: 2530 2531##### *Example* 2532 2533 2534### void uv_fs_fchown(resource $loop, zval $fd, long $uid, $long $gid, callable $callback) 2535 2536##### *Description* 2537 2538async fchown 2539 2540##### *Parameters* 2541 2542*resource $handle*: uv loop handle 2543 2544*zval $fd*: 2545 2546*long $uid*: 2547 2548*long $gid*: 2549 2550*callable $callback*: 2551 2552##### *Return Value* 2553 2554*void*: 2555 2556##### *Example* 2557 2558 2559### void uv_fs_link(resource $loop, string $from, string $to, callable $callback) 2560 2561##### *Description* 2562 2563async link 2564 2565##### *Parameters* 2566 2567*resource $handle*: uv loop handle 2568 2569*string $from*: 2570 2571*string $to*: 2572 2573*callable $callback*: 2574 2575##### *Return Value* 2576 2577*void*: 2578 2579##### *Example* 2580 2581 2582### void uv_fs_symlink(resource $loop, string $from, string $to, long $flags, callable $callback) 2583 2584##### *Description* 2585 2586async symlink 2587 2588##### *Parameters* 2589 2590*resource $handle*: uv loop handle 2591 2592*string $from*: 2593 2594*string $to*: 2595 2596*long $flags*: 2597 2598*callable $callback*: 2599 2600##### *Return Value* 2601 2602*void*: 2603 2604##### *Example* 2605 2606 2607### void uv_fs_readlink(resource $loop, string $path, callable $callback) 2608 2609##### *Description* 2610 2611async readlink 2612 2613##### *Parameters* 2614 2615*resource $handle*: uv loop handle 2616 2617*string $path*: 2618 2619*callable $callback*: 2620 2621##### *Return Value* 2622 2623*void*: 2624 2625##### *Example* 2626 2627 2628### void uv_fs_stat(resource $loop, string $path, callable $callback) 2629 2630##### *Description* 2631 2632async stat 2633 2634##### *Parameters* 2635 2636*resource $handle*: uv loop handle 2637 2638*string $path*: 2639 2640*callable $callback*: this callback parameter expects (resource $stream, array $stat) 2641 2642##### *Return Value* 2643 2644*void*: 2645 2646##### *Example* 2647 2648 2649 2650### void uv_fs_lstat(resource $loop, string $path, callable $callback) 2651 2652##### *Description* 2653 2654async lstat 2655 2656##### *Parameters* 2657 2658*resource $handle*: uv loop handle 2659 2660*string $path*: 2661 2662*callable $callback*: 2663 2664##### *Return Value* 2665 2666*void*: 2667 2668##### *Example* 2669 2670 2671 2672### void uv_fs_fstat(resource $loop, zval $fd, callable $callback) 2673 2674##### *Description* 2675 2676async fstat 2677 2678##### *Parameters* 2679 2680*resource $handle*: uv loop handle 2681 2682*zval $fd*: 2683 2684*callable $callback*: 2685 2686##### *Return Value* 2687 2688*void*: 2689 2690##### *Example* 2691 2692 2693 2694### uv_fs_readdir(resource $loop, string $path, long $flags, callable $callback) 2695 2696##### *Description* 2697 2698async readdir 2699 2700##### *Parameters* 2701 2702*resource $handle*: uv loop handle 2703 2704*string $path*: 2705 2706*long $flags*: 2707 2708*callable $callback*: 2709 2710##### *Return Value* 2711 2712*void*: 2713 2714##### *Example* 2715 2716 2717### void uv_fs_sendfile(resource $loop, zval $in_fd, zval $out_fd, long $offset, long $length, callable $callback) 2718 2719##### *Description* 2720 2721async sendfile 2722 2723##### *Parameters* 2724 2725*resource $handle*: uv loop handle 2726 2727*zval $in_fd*: 2728 2729*zval $out_fd*: 2730 2731*long $offset*: 2732 2733*long $length*: 2734 2735*callable $callback*: 2736 2737##### *Return Value* 2738 2739*void*: 2740 2741##### *Example* 2742 2743 2744### resource uv_fs_event_init(resource $loop, string $path, callable $callback, long $flags = 0) 2745 2746##### *Description* 2747 2748initialize fs event. 2749 2750##### *Parameters* 2751 2752*resource $handle*: uv loop handle 2753 2754*string $path*: 2755 2756*callable $callback*: 2757 2758##### *Return Value* 2759 2760*void*: 2761 2762##### *Example* 2763 2764 2765 2766### resource uv_tty_init(resource $loop, zval $fd, long $readable) 2767 2768##### *Description* 2769 2770initialize tty resource. you have to open tty your hand. 2771 2772##### *Parameters* 2773 2774*resource $handle*: uv loop handle 2775 2776*zval $fd*: 2777 2778*long $readable*: 2779 2780##### *Return Value* 2781 2782*resource $uv_tty*: 2783 2784##### *Example* 2785 2786 2787 2788### long uv_tty_get_winsize(resource $tty, long &$width, long &$height) 2789 2790 2791### long uv_tty_set_mode(resource $tty, long $mode) 2792 2793 2794### void uv_tty_reset_mode(void) 2795 2796 2797### string uv_tcp_getsockname(resource $uv_sockaddr) 2798 2799 2800### string uv_tcp_getpeername(resource $uv_sockaddr) 2801 2802 2803### string uv_udp_getsockname(resource $uv_sockaddr) 2804 2805 2806### long uv_resident_set_memory(void) 2807 2808 2809### string uv_ip4_name(resource uv_sockaddr $address) 2810 2811 2812### string uv_ip6_name(resource uv_sockaddr $address) 2813 2814 2815### uv uv_poll_init([resource $uv_loop], zval fd) 2816 2817##### *Description* 2818 2819initialize poll 2820 2821##### *Parameters* 2822 2823*resource $uv_loop*: uv_loop resource. 2824 2825*mixed $fd*: this expects long fd, PHP's stream or PHP's socket resource. 2826 2827##### *Return Value* 2828 2829*resource uv*: uv resource which initialized poll. 2830 2831##### *Example* 2832 2833````php 2834<?php 2835$fd = fopen("php://stdout","w+"); 2836 2837$poll = uv_poll_init(uv_default_loop(), $fd); 2838 2839```` 2840 2841##### *Note* 2842 2843* some platform doesn't support file descriptor on these method. 2844 2845 2846### uv uv_poll_start(resource $handle, $events, $callback) 2847 2848##### *Description* 2849 2850start polling 2851 2852##### *Parameters* 2853 2854*resource $poll*: uv poll resource. 2855 2856*long $events*: UV::READBLE and UV::WRITABLE flags. 2857 2858*callable $callback*: this callback parameter expects (resource $poll, long $status, long $events, mixed $connection). the connection parameter passes uv_poll_init'd fd. 2859 2860##### *Return Value* 2861 2862*void*: 2863 2864##### *Example* 2865 2866````php 2867<?php 2868$fd = fopen("php://stdout","w+"); 2869 2870$poll = uv_poll_init(uv_default_loop(), $fd); 2871uv_poll_start($poll, UV::WRITABLE, function($poll, $stat, $ev, $conn){ 2872 fwrite($conn, "Hello"); 2873 fclose($conn); 2874 uv_poll_stop($poll); 2875}); 2876 2877uv_run(); 2878```` 2879 2880##### *Note* 2881 2882* if you want to use a socket. please use uv_poll_init_socket instead of this. Windows can't handle socket with this function. 2883 2884 2885 2886### void uv_poll_stop(resource $poll) 2887 2888 2889### uv uv_fs_poll_init([resource $uv_loop]) 2890 2891 2892### uv uv_fs_poll_start(resource $handle, $callback, string $path, long $interval) 2893 2894 2895### void uv_fs_poll_stop(resource $poll) 2896 2897 2898### void uv_stop([resource $uv_loop]) 2899 2900##### *Description* 2901 2902##### *Parameters* 2903 2904*resource $uv_loop*: uv loop handle 2905 2906##### *Return Value* 2907 2908*void*: 2909 2910##### *Example* 2911 2912 2913### resource uv_signal_init([resource $uv_loop]) 2914 2915##### *Description* 2916 2917##### *Parameters* 2918 2919*resource $uv_loop*: uv loop handle 2920 2921##### *Return Value* 2922 2923*resource*: 2924 2925##### *Example* 2926 2927### void uv_signal_start(resource $sig_handle, callable $sig_callback, int $sig_num) 2928 2929##### *Description* 2930 2931##### *Parameters* 2932 2933*resource $sig_handle*: 2934 2935*callable $callable*: signal callback 2936 2937*int $sig_num*: signal 2938 2939##### *Return Value* 2940 2941*void*: 2942 2943##### *Example* 2944 2945### int uv_signal_stop(resource $sig_handle) 2946 2947##### *Description* 2948 2949##### *Parameters* 2950 2951*resource $sig_handle*: 2952 2953##### *Return Value* 2954 2955*int $sig_num*: 2956 2957##### *Example* 2958 2959