发布于 2015-08-09 09:42:39 | 706 次阅读 | 评论: 0 | 来源: 网络整理
swoole扩展中swoole_server只能在cli模式下使用,在其他模式下会抛出致命错误。 而swoole_client和swoole_event是可以用在php-fpm或apache+mod_php5中的。
需要注意的是使用swoole_client异步和swoole_event,在所有数据收到并处理完后,一定要执行$client->close()、swoole_event_del或swoole_event_exit,否则swoole无法得知什么时候要停止epoll wait。
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); //同步阻塞
$client->connect('127.0.0.1', 9501) or die("connect failedn");
$client->send(str_repeat("A", 600));
$data = $client->recv(700, 0) or die("recv failedn);;
echo "recv: ",$data,"n";
<?php
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); //异步非阻塞
$client->on("connect", function(swoole_client $cli) {
$cli->send("GET / HTTP/1.1rnrn");
});
$client->on("receive", function(swoole_client $cli, $data){
echo "Received: $data";
$cli->close();
});
$client->on("error", function(swoole_client $cli){
exit("errorn");
});
$client->on("close", function(swoole_client $cli){
echo "Connection close";
});
$client->connect('127.0.0.1', 9501, 0.5);
echo "connect to 127.0.0.1:9501";
//for PHP5.3-
//swoole_event_wait();