<?php
use \Workerman\Worker;
use \Workerman\Connection\AsyncTcpConnection;
require_once __DIR__ . '/Workerman/Autoloader.php';
$task = new Worker();
// 進(jìn)程啟動時異步建立一個到www.baidu.com連接對象,并發(fā)送數(shù)據(jù)獲取數(shù)據(jù)
$task->onWorkerStart = function($task)
{
//不使用SSL,斷線重連正常
$connection_to_baidu = new AsyncTcpConnection('tcp://www.baidu.com:443');
// 設(shè)置為ssl加密連接
$connection_to_baidu->transport = 'ssl';
$connection_to_baidu->onConnect = function($connection_to_baidu)
{
echo "connect success\n";
$connection_to_baidu->send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: keep-alive\r\n\r\n");
};
$connection_to_baidu->onMessage = function($connection_to_baidu, $http_buffer)
{
//echo $http_buffer;
};
$connection_to_baidu->onClose = function($connection_to_baidu)
{
echo "connection closed\n";
$connection_to_baidu->reConnect(5);
};
$connection_to_baidu->onError = function($connection_to_baidu, $code, $msg)
{
echo "Error code:$code msg:$msg\n";
};
$connection_to_baidu->connect();
};
// 運行worker
Worker::runAll();
非SSL可正常實現(xiàn)斷線自動重連。使用SSL提示一下錯誤:
Warning: stream_socket_client(): unable to connect to ssl://14.215.177.38:443 (Unknown error) in .\Workerman\Connection\AsyncTcpConnection.php o
n line 173
Call Stack:
0.4127 357632 1. {main}() .\http.php:0
0.4144 472024 2. Workerman\Worker::runAll() .\http.php:38
0.4174 535304 3. Workerman\Worker::runAllWorkers() .\Workerman\Worker.php:382
0.4174 535304 4. Workerman\Worker->run() .\Workerman\Worker.php:473
0.6719 689440 5. Workerman\Events\Select->loop() .\Workerman\Worker.php:856
236.0120 689240 6. Workerman\Events\Select->tick() .\Workerman\Events\Select.php:274
236.0121 689240 7. call_user_func_array:{.\Workerman\Events\Select.php:233}() .\Workerman\Events\Sel
ect.php:233
236.0121 689304 8. Workerman\Connection\AsyncTcpConnection->connect() .\Workerman\Events\Select.php:233
236.0121 689400 9. stream_socket_client() .\Workerman\Connection\AsyncTcpConnection.php:173
Error code:1 msg:
connection closed
PHP Warning: stream_socket_client(): SSL: ???????????????????(???????? sendto ???÷??????????????)?????????????????????????????б??????
in .\Workerman\Connection\AsyncTcpConnection.php on line 173
PHP Stack trace:
PHP 1. {main}() .\http.php:0
PHP 2. Workerman\Worker::runAll() .\http.php:38
PHP 3. Workerman\Worker::runAllWorkers() .\Workerman\Worker.php:382
PHP 4. Workerman\Worker->run() .\Workerman\Worker.php:473
PHP 5. Workerman\Events\Select->loop() .\Workerman\Worker.php:856
PHP 6. Workerman\Events\Select->tick() .\Workerman\Events\Select.php:274
PHP 7. call_user_func_array:{.\Workerman\Events\Select.php:233}() .\Workerman\Events\Select.php:233
PHP 8. Workerman\Connection\AsyncTcpConnection->connect() .\Workerman\Events\Select.php:233
PHP 9. stream_socket_client() .\Workerman\Connection\AsyncTcpConnection.php:173
相同的代碼,在Windows,PHP7.1.10下,開啟php_event.dll、php_sockets.dll,后出現(xiàn)死循環(huán)(反復(fù)觸發(fā)連接成功事件)。
connection closed
PHP Warning: stream_socket_client(): php_network_getaddresses: getaddrinfo failed: ? in .\Workerman\Connection\AsyncTcpConnection.php on line 181
PHP Stack trace:
PHP 1. {main}() .\http.php:0
PHP 2. Workerman\Worker::runAll() .\http.php:44
PHP 3. Workerman\Worker::runAllWorkers() .\Workerman\Worker.php:382
PHP 4. Workerman\Worker->run() .\Workerman\Worker.php:473
PHP 5. Workerman\Events\Select->loop() .\Workerman\Worker.php:856
PHP 6. Workerman\Events\Select->tick() .\Workerman\Events\Select.php:274
PHP 7. call_user_func_array:{.\Workerman\Events\Select.php:233}() .\Workerman\Events\Select.php:233
PHP 8. Workerman\Connection\AsyncTcpConnection->connect() .\Workerman\Events\Select.php:233
PHP 9. stream_socket_client() .\Workerman\Connection\AsyncTcpConnection.php:181
Warning: stream_socket_client(): php_network_getaddresses: getaddrinfo failed: ? in .\Workerman\Connection\AsyncTcpConnection.php on line 181
Call Stack:
0.4161 357520 1. {main}() .\http.php:0
0.4176 471776 2. Workerman\Worker::runAll() .\http.php:44
0.4209 535016 3. Workerman\Worker::runAllWorkers() .\Workerman\Worker.php:382
0.4209 535016 4. Workerman\Worker->run() .\Workerman\Worker.php:473
0.6775 689344 5. Workerman\Events\Select->loop() .\Workerman\Worker.php:856
20.5527 689144 6. Workerman\Events\Select->tick() .\Workerman\Events\Select.php:274
20.5529 689144 7. call_user_func_array:{.\Workerman\Events\Select.php:233}() .\Workerman\Events\Select.php:233
20.5529 689208 8. Workerman\Connection\AsyncTcpConnection->connect() .\Workerman\Events\Select.php:233
20.5529 689304 9. stream_socket_client() .\Workerman\Connection\AsyncTcpConnection.php:181
PHP Warning: stream_socket_client(): unable to connect to ssl://www.baidu.com:443 (php_network_getaddresses: getaddrinfo failed: ? ) in .\Workerman\Connection\AsyncTcpConnection.php o
n line 181
PHP Stack trace:
PHP 1. {main}() .\http.php:0
PHP 2. Workerman\Worker::runAll() .\http.php:44
PHP 3. Workerman\Worker::runAllWorkers() .\Workerman\Worker.php:382
PHP 4. Workerman\Worker->run() .\Workerman\Worker.php:473
PHP 5. Workerman\Events\Select->loop() .\Workerman\Worker.php:856
PHP 6. Workerman\Events\Select->tick() .\Workerman\Events\Select.php:274
PHP 7. call_user_func_array:{.\Workerman\Events\Select.php:233}() .\Workerman\Events\Select.php:233
PHP 8. Workerman\Connection\AsyncTcpConnection->connect() .\Workerman\Events\Select.php:233
PHP 9. stream_socket_client() .\Workerman\Connection\AsyncTcpConnection.php:181
Warning: stream_socket_client(): unable to connect to ssl://www.baidu.com:443 (php_network_getaddresses: getaddrinfo failed: ? ) in .\Workerman\Connection\AsyncTcpConnection.php on lin
e 181
Call Stack:
0.4161 357520 1. {main}() .\http.php:0
0.4176 471776 2. Workerman\Worker::runAll() .\http.php:44
0.4209 535016 3. Workerman\Worker::runAllWorkers() .\Workerman\Worker.php:382
0.4209 535016 4. Workerman\Worker->run() .\Workerman\Worker.php:473
0.6775 689344 5. Workerman\Events\Select->loop() .\Workerman\Worker.php:856
20.5527 689144 6. Workerman\Events\Select->tick() .\Workerman\Events\Select.php:274
20.5529 689144 7. call_user_func_array:{.\Workerman\Events\Select.php:233}() .\Workerman\Events\Select.php:233
20.5529 689208 8. Workerman\Connection\AsyncTcpConnection->connect() .\Workerman\Events\Select.php:233
20.5529 689304 9. stream_socket_client() .\Workerman\Connection\AsyncTcpConnection.php:181
Error code:1 msg:php_network_getaddresses: getaddrinfo failed: ?
connection closed
PHP Warning: stream_socket_client(): php_network_getaddresses: getaddrinfo failed: ? in .\Workerman\Connection\AsyncTcpConnection.php on line 181
PHP Stack trace:
PHP 1. {main}() .\http.php:0
PHP 2. Workerman\Worker::runAll() .\http.php:44
PHP 3. Workerman\Worker::runAllWorkers() .\Workerman\Worker.php:382
PHP 4. Workerman\Worker->run() .\Workerman\Worker.php:473
PHP 5. Workerman\Events\Select->loop() .\Workerman\Worker.php:856
PHP 6. Workerman\Events\Select->tick() .\Workerman\Events\Select.php:274
PHP 7. call_user_func_array:{.\Workerman\Events\Select.php:233}() .\Workerman\Events\Select.php:233
PHP 8. Workerman\Connection\AsyncTcpConnection->connect() .\Workerman\Events\Select.php:233
PHP 9. stream_socket_client() .\Workerman\Connection\AsyncTcpConnection.php:181
Windows平臺 PHP7.1.10
bcmath
bz2
calendar
Core
ctype
curl
date
dom
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
wddx
xdebug
xml
xmlreader
xmlwriter
xsl
zip
zlib
Xdebug
PHP Warning: stream_socket_client(): Failed to enable crypto in .\Workerman\Connection\AsyncTcpConnection.php on line 181
PHP Warning: stream_socket_client(): unable to connect to ssl://www.baidu.com:443 (Unknown error) in .\Workerman\Connection\AsyncTcpConnection.php o
n line 181
有設(shè)置重連延時參數(shù),不過不生效,程序陷入死循環(huán)。
stream_socket_client(): unable to connect to ssl://www.zhihu.com:443 (php_network_getaddresses: getaddrinfo failed: 不知道這樣的主機。 ) in .\Workerman\Connection\AsyncTcpConnection.php on line 181
一樣的問題,你的服務(wù)器網(wǎng)絡(luò)有點問題,通過域名無法獲取主機
php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
event
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
igbinary
json
ldap
libxml
mbstring
memcached
mysqli
mysqlnd
odbc
openssl
pcntl
pcre
PDO
pdo_mysql
PDO_ODBC
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib
[Zend Modules]