log_file = $dir.$filename;
$this->serv = new swoole_server("0.0.0.0", 9501);
$this->serv->set(array(
'worker_num' => 1, //一般设置为服务器CPU数的1-4倍
'daemonize' => 1, //以守护进程执行
'max_request' => 10000,
'dispatch_mode' => 2,
'task_worker_num' => 32, //task进程的数量
"task_ipc_mode " => 3 , //使用消息队列通信,并设置为争抢模式,
"open_eof_check"=>true,
"package_eof"=>"\r\n",
"open_eof_split"=>true,
//"log_file" => "log/taskqueueu.log" ,//日志
));
$this->serv->on('Receive', array($this, 'onReceive'));
// bind callback
$this->serv->on('Task', array($this, 'onTask'));
$this->serv->on('Finish', array($this, 'onFinish'));
$this->serv->start();
}
/**
* 接收数据
* @param swoole_server $serv
* @param $fd
* @param $from_id
* @param $data
*/
public function onReceive(swoole_server $serv, $fd, $from_id, $data ) {
error_log(date("Ymd H:i:s")."\t onReceive===>".PHP_EOL,3,$this->log_file);
//echo "Get Message From Client {$fd}:{$data}n";
// send a task to task worker.
$serv->task( $data);
}
/***
* 执行业务逻辑
* @param $serv
* @param $task_id
* @param $from_id
* @param $data
* @return int
*/
public function onTask($serv,$task_id,$from_id, $data) {
error_log(date("Ymd H:i:s")."onTask start===>".var_export($data,true).PHP_EOL,3,$this->log_file);
$data = trim($data);
$data = str_replace(array("\r\n", "\r", "\n"), "", $data);
error_log(date("Ymd H:i:s")."onTask start===>".var_export($data,true).PHP_EOL,3,$this->log_file);
$promopage = json_decode( $data , true );
$calc_sign = md5($promopage['download_filename'].date("Y"));
if($calc_sign==$promopage['sign']){
chdir($this->source_file_dir);//切换到apk路径
$output_file_dir = str_replace('/','',dirname($promopage['download_filename']));
if(!is_dir($output_file_dir)){
mkdir($output_file_dir,0755,true);
}
$apk_tpl_name = basename($promopage['download_filename'],'.apk');//获取包名
//接收参数 打包
$command = "/usr/local/webserver/javaweb/jdk/bin/java -jar MCPTool-1.1.jar -path %s -outdir ./%s -contents %s";
$command = sprintf($command,$this->source_file_dir.$promopage['apk_name'],$output_file_dir,$apk_tpl_name);
error_log(date("Ymd H:i:s")."command start===>".$command.PHP_EOL,3,$this->log_file);
exec($command,$return);
error_log(date("Ymd H:i:s")."command end===>".var_export($return,true).PHP_EOL,3,$this->log_file);
return 0;
}else{
error_log(date("Ymd H:i:s")."onTask error===>".$calc_sign.'=====>'.var_export($promopage,true).PHP_EOL,3,$this->log_file);
return -1;
}
}
/**
* 连接结束
* @param $serv
* @param $task_id
* @param $data
*/
public function onFinish($serv,$task_id, $data) {
error_log(date("Ymd H:i:s")."\tonFinish===>".PHP_EOL,3,$this->log_file);
//echo "Task {$task_id} finishn";
//echo "Result: {$data}n";
}
}
$server = new Packserver();
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_24700495/article/details/144394932