fix:修复BUG/升级1.1.6版本
This commit is contained in:
58
windows.php
58
windows.php
@@ -4,9 +4,9 @@
|
||||
*/
|
||||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
use Dotenv\Dotenv;
|
||||
use process\Monitor;
|
||||
use support\App;
|
||||
use Dotenv\Dotenv;
|
||||
use Workerman\Worker;
|
||||
|
||||
ini_set('display_errors', 'on');
|
||||
@@ -22,20 +22,20 @@ if (class_exists('Dotenv\Dotenv') && file_exists(base_path() . '/.env')) {
|
||||
|
||||
App::loadAllConfig(['route']);
|
||||
|
||||
$error_reporting = config('app.error_reporting');
|
||||
if (isset($error_reporting)) {
|
||||
error_reporting($error_reporting);
|
||||
$errorReporting = config('app.error_reporting');
|
||||
if (isset($errorReporting)) {
|
||||
error_reporting($errorReporting);
|
||||
}
|
||||
|
||||
$runtime_process_path = runtime_path() . DIRECTORY_SEPARATOR . '/windows';
|
||||
if (!is_dir($runtime_process_path)) {
|
||||
mkdir($runtime_process_path);
|
||||
$runtimeProcessPath = runtime_path() . DIRECTORY_SEPARATOR . '/windows';
|
||||
if (!is_dir($runtimeProcessPath)) {
|
||||
mkdir($runtimeProcessPath);
|
||||
}
|
||||
$process_files = [
|
||||
$processFiles = [
|
||||
__DIR__ . DIRECTORY_SEPARATOR . 'start.php'
|
||||
];
|
||||
foreach (config('process', []) as $process_name => $config) {
|
||||
$process_files[] = write_process_file($runtime_process_path, $process_name, '');
|
||||
foreach (config('process', []) as $processName => $config) {
|
||||
$processFiles[] = write_process_file($runtimeProcessPath, $processName, '');
|
||||
}
|
||||
|
||||
foreach (config('plugin', []) as $firm => $projects) {
|
||||
@@ -43,20 +43,20 @@ foreach (config('plugin', []) as $firm => $projects) {
|
||||
if (!is_array($project)) {
|
||||
continue;
|
||||
}
|
||||
foreach ($project['process'] ?? [] as $process_name => $config) {
|
||||
$process_files[] = write_process_file($runtime_process_path, $process_name, "$firm.$name");
|
||||
foreach ($project['process'] ?? [] as $processName => $config) {
|
||||
$processFiles[] = write_process_file($runtimeProcessPath, $processName, "$firm.$name");
|
||||
}
|
||||
}
|
||||
foreach ($projects['process'] ?? [] as $process_name => $config) {
|
||||
$process_files[] = write_process_file($runtime_process_path, $process_name, $firm);
|
||||
foreach ($projects['process'] ?? [] as $processName => $config) {
|
||||
$processFiles[] = write_process_file($runtimeProcessPath, $processName, $firm);
|
||||
}
|
||||
}
|
||||
|
||||
function write_process_file($runtime_process_path, $process_name, $firm)
|
||||
function write_process_file($runtimeProcessPath, $processName, $firm): string
|
||||
{
|
||||
$process_param = $firm ? "plugin.$firm.$process_name" : $process_name;
|
||||
$config_param = $firm ? "config('plugin.$firm.process')['$process_name']" : "config('process')['$process_name']";
|
||||
$file_content = <<<EOF
|
||||
$processParam = $firm ? "plugin.$firm.$processName" : $processName;
|
||||
$configParam = $firm ? "config('plugin.$firm.process')['$processName']" : "config('process')['$processName']";
|
||||
$fileContent = <<<EOF
|
||||
<?php
|
||||
require_once __DIR__ . '/../../vendor/autoload.php';
|
||||
|
||||
@@ -73,7 +73,7 @@ if (is_callable('opcache_reset')) {
|
||||
|
||||
App::loadAllConfig(['route']);
|
||||
|
||||
worker_start('$process_param', $config_param);
|
||||
worker_start('$processParam', $configParam);
|
||||
|
||||
if (DIRECTORY_SEPARATOR != "/") {
|
||||
Worker::\$logFile = config('server')['log_file'] ?? Worker::\$logFile;
|
||||
@@ -82,27 +82,27 @@ if (DIRECTORY_SEPARATOR != "/") {
|
||||
Worker::runAll();
|
||||
|
||||
EOF;
|
||||
$process_file = $runtime_process_path . DIRECTORY_SEPARATOR . "start_$process_param.php";
|
||||
file_put_contents($process_file, $file_content);
|
||||
return $process_file;
|
||||
$processFile = $runtimeProcessPath . DIRECTORY_SEPARATOR . "start_$processParam.php";
|
||||
file_put_contents($processFile, $fileContent);
|
||||
return $processFile;
|
||||
}
|
||||
|
||||
if ($monitor_config = config('process.monitor.constructor')) {
|
||||
$monitor = new Monitor(...array_values($monitor_config));
|
||||
if ($monitorConfig = config('process.monitor.constructor')) {
|
||||
$monitor = new Monitor(...array_values($monitorConfig));
|
||||
}
|
||||
|
||||
function popen_processes($process_files)
|
||||
function popen_processes($processFiles)
|
||||
{
|
||||
$cmd = "php " . implode(' ', $process_files);
|
||||
$cmd = '"' . PHP_BINARY . '" ' . implode(' ', $processFiles);
|
||||
$descriptorspec = [STDIN, STDOUT, STDOUT];
|
||||
$resource = proc_open($cmd, $descriptorspec, $pipes);
|
||||
$resource = proc_open($cmd, $descriptorspec, $pipes, null, null, ['bypass_shell' => true]);
|
||||
if (!$resource) {
|
||||
exit("Can not execute $cmd\r\n");
|
||||
}
|
||||
return $resource;
|
||||
}
|
||||
|
||||
$resource = popen_processes($process_files);
|
||||
$resource = popen_processes($processFiles);
|
||||
echo "\r\n";
|
||||
while (1) {
|
||||
sleep(1);
|
||||
@@ -111,6 +111,6 @@ while (1) {
|
||||
$pid = $status['pid'];
|
||||
shell_exec("taskkill /F /T /PID $pid");
|
||||
proc_close($resource);
|
||||
$resource = popen_processes($process_files);
|
||||
$resource = popen_processes($processFiles);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user