修复工单PHP CLI同步问题 系统设置可以设置并发阈值
This commit is contained in:
@@ -57,11 +57,23 @@ class SplitSyncConfigService
|
||||
{
|
||||
$value = self::getConfigValue('split_sync_max_per_cron');
|
||||
if ($value === '') {
|
||||
return 2;
|
||||
return 5;
|
||||
}
|
||||
return max(1, min(20, (int) $value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Node 通道候选池倍数(候选数 = maxPerRun × 本值)
|
||||
*/
|
||||
public static function getNodeCandidatePoolMultiplier(): int
|
||||
{
|
||||
$value = self::getConfigValue('split_sync_node_candidate_multiplier');
|
||||
if ($value === '') {
|
||||
return 10;
|
||||
}
|
||||
return max(3, min(50, (int) $value));
|
||||
}
|
||||
|
||||
/**
|
||||
* 全局 cron 锁过期秒数,防止异常退出后永久占锁
|
||||
*/
|
||||
@@ -86,6 +98,53 @@ class SplitSyncConfigService
|
||||
return max(0, (int) $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 后台投递 / Cron 使用的 PHP CLI 可执行文件路径
|
||||
*
|
||||
* Web(FPM) 环境下 PHP_BINARY 指向 php-fpm,不能用于 think 命令。
|
||||
*/
|
||||
public static function getCliPhpBinary(): string
|
||||
{
|
||||
$configured = trim(self::getConfigValue('split_sync_cli_php'));
|
||||
if ($configured !== '' && self::isUsableCliPhp($configured)) {
|
||||
return $configured;
|
||||
}
|
||||
|
||||
if (defined('PHP_BINDIR') && PHP_BINDIR !== '') {
|
||||
$candidate = rtrim(PHP_BINDIR, '/\\') . DIRECTORY_SEPARATOR . 'php';
|
||||
if (self::isUsableCliPhp($candidate)) {
|
||||
return $candidate;
|
||||
}
|
||||
}
|
||||
|
||||
if (PHP_SAPI === 'cli' && defined('PHP_BINARY') && PHP_BINARY !== '' && self::isUsableCliPhp(PHP_BINARY)) {
|
||||
return PHP_BINARY;
|
||||
}
|
||||
|
||||
foreach (['/usr/bin/php', '/usr/local/bin/php'] as $candidate) {
|
||||
if (self::isUsableCliPhp($candidate)) {
|
||||
return $candidate;
|
||||
}
|
||||
}
|
||||
|
||||
return 'php';
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断路径是否为可用的 PHP CLI(排除 php-fpm)
|
||||
*/
|
||||
private static function isUsableCliPhp(string $path): bool
|
||||
{
|
||||
if (stripos($path, 'fpm') !== false) {
|
||||
return false;
|
||||
}
|
||||
if ($path === 'php') {
|
||||
return true;
|
||||
}
|
||||
|
||||
return is_file($path) && is_executable($path);
|
||||
}
|
||||
|
||||
private static function getConfigValue(string $name): string
|
||||
{
|
||||
$site = Config::get('site.' . $name);
|
||||
|
||||
Reference in New Issue
Block a user