1 Star 0 Fork 3

海天之间 / threadtask

forked from 阿宝 / threadtask 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
socket-client.php 1.91 KB
一键复制 编辑 原始数据 按行查看 历史
<?php
$running = true;
$exitSig = 0;
function signal($sig) {
global $running, $exitSig;
$exitSig = $sig;
$running = false;
defined('THREAD_TASK_NAME') or task_set_run(false);
}
pcntl_async_signals(true);
pcntl_signal(SIGTERM, 'signal', false);
pcntl_signal(SIGINT, 'signal', false);
pcntl_signal(SIGUSR1, 'signal', false);
pcntl_signal(SIGUSR2, 'signal', false);
if(defined('THREAD_TASK_NAME')) {
$host = $_SERVER['argv'][1];
$port = (int) $_SERVER['argv'][2];
while($running) {
$fd = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($fd === false) {
share_var_inc('errs', 1);
//strerror('socket_connect', false);
continue;
}
@socket_set_option($fd, SOL_SOCKET, SO_LINGER, ['l_onoff'=>1, 'l_linger'=>1]);
@socket_set_option($fd, SOL_SOCKET, SO_REUSEADDR, 1) or strerror('socket_set_option', false);
if(!@socket_connect($fd, $host, $port)) {
share_var_inc('errs', 1);
//strerror('socket_connect', false);
@socket_close($fd);
continue;
}
if(($str = @socket_read($fd, 1024)) !== false) {
share_var_inc('conns', 1);
//echo $str;
@socket_write($fd, '1');
} else share_var_inc('errs', 1);
@socket_close($fd);
}
} else {
$host = ($_SERVER['argv'][1]??'127.0.0.1');
$port = (int) ($_SERVER['argv'][2]??5000);
$conns = (int) ($_SERVER['argv'][3]??100);
task_set_threads($conns);
share_var_init(2);
for($i=0; $i<$conns; $i++) create_task('conn' . $i, __FILE__, [$host, $port]);
$n = 0;
$e = 0;
while($running) {
sleep(1);
$n2 = share_var_get('conns');
$n3 = share_var_get('errs');
$n = $n2 - $n;
$e = $n3 - $e;
echo "$n connects, $e errors\n";
$n = $n2;
$e = $n3;
}
task_wait($exitSig?:SIGINT);
share_var_destory();
echo "Stoped\n";
}
function strerror($msg, $isExit = true) {
$err = socket_last_error();
printf("[%s] %s(%d): %s\n", defined('THREAD_TASK_NAME') ? THREAD_TASK_NAME : 'main', $msg, $err, socket_strerror($err));
if($isExit) exit; else return true;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/roadahead/threadtask.git
git@gitee.com:roadahead/threadtask.git
roadahead
threadtask
threadtask
main

搜索帮助

344bd9b3 5694891 D2dac590 5694891