1 Star 0 Fork 3

海天之间 / threadtask

forked from 阿宝 / threadtask 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
var4.php 2.72 KB
一键复制 编辑 原始数据 按行查看 历史
阿宝 提交于 2021-02-18 11:05 . Update var4.php
<?php
$running = true;
$exitSig = 0;
function signal($sig) {
global $running, $exitSig;
$running = false;
$exitSig = $sig;
}
pcntl_async_signals(true);
pcntl_signal(SIGTERM, 'signal', false);
pcntl_signal(SIGINT, 'signal', false);
define('SUCCESS', 0);
define('FAILURE', 1);
$vars = ts_var_declare(null);
$stat = ts_var_declare('stat');
$var = ts_var_declare('var');
$var2 = ts_var_declare('var2');
$time = time();
if(defined('THREAD_TASK_NAME')) {
while($running) {
switch(rand(0, 19)) {
case 0:
$fd = ts_var_declare('fd', $var, true);
$r = ts_var_fd($fd);
$w = ts_var_fd($fd, true);
if(!@socket_write($w, 'a') || !@socket_read($r, 1)) {
ts_var_inc($stat, FAILURE, 1);
}
$r and socket_export_fd($r, true);
$w and socket_export_fd($w, true);
unset($fd, $r, $w);
break;
case 1:
ts_var_del($var, 'fd') or ts_var_inc($stat, FAILURE, 1);
break;
case 2:
$res = ts_var_declare('declare.del', $var);
ts_var_push($res, 'L', 'C', 'R');
ts_var_pop($res, $i);
ts_var_shift($res, $i);
ts_var_pop($res, $i);
unset($res);
break;
case 3:
ts_var_del($var, 'declare.del') or ts_var_inc($stat, FAILURE, 1);
break;
case 4:
ts_var_set($var, 'set.del', rand()) or ts_var_inc($stat, FAILURE, 1);
break;
case 5:
ts_var_del($var, 'set.del') or ts_var_inc($stat, FAILURE, 1);
break;
case 6:
ts_var_get($var, 'set.del', true) or ts_var_inc($stat, FAILURE, 1);
break;
case 7:
ts_var_set($var, 'expire', random_bytes(16), $time + 1) or ts_var_inc($stat, FAILURE, 1);
break;
case 8:
ts_var_exists($var, 'expire') or ($time = time() + 1);
break;
case 9:
ts_var_count($var);
break;
case 10:
case 11:
case 12:
case 13:
ts_var_inc($var2, rand(0, 99), 1);
break;
case 14:
ts_var_del($var2, rand(0, 99)) or ts_var_inc($stat, FAILURE, 1);
break;
case 15:
$time % 10 === 0 and ts_var_reindex($var2);
break;
case 16:
ts_var_get($var);
break;
case 17:
ts_var_set($var, 0, rand());
break;
case 18:
ts_var_del($var, 0);
break;
case 19:
ts_var_get($var, null, true);
break;
}
ts_var_inc($stat, SUCCESS, 1);
}
} else {
$threads = (int) ($_SERVER['argv'][1] ?? 4);
for($i=0; $i<$threads; $i++) {
create_task('task' . $i, __FILE__, []);
}
$stat = ts_var_declare('stat');
while($running) {
sleep(1);
$n = ts_var_clean($vars, ++$time) + ts_var_count($var) + ts_var_count($var2);
$success = (int) ts_var_get($stat, SUCCESS, true);
$failure = (int) ts_var_get($stat, FAILURE, true);
echo "vars: $n, success: $success, failure: $failure\n";
}
task_wait($exitSig?:SIGINT);
$n = ts_var_clean($vars);
echo "vars: $n\n";
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/roadahead/threadtask.git
git@gitee.com:roadahead/threadtask.git
roadahead
threadtask
threadtask
main

搜索帮助

344bd9b3 5694891 D2dac590 5694891