2024-01-03 10:31:21 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
|
|
namespace SPC\builder\extension;
|
|
|
|
|
|
|
|
|
|
use SPC\builder\Extension;
|
|
|
|
|
use SPC\exception\RuntimeException;
|
|
|
|
|
use SPC\exception\WrongUsageException;
|
|
|
|
|
use SPC\util\CustomExt;
|
|
|
|
|
|
|
|
|
|
#[CustomExt('swoole-hook-pgsql')]
|
|
|
|
|
class swoole_hook_pgsql extends Extension
|
|
|
|
|
{
|
|
|
|
|
public function getUnixConfigureArg(): string
|
|
|
|
|
{
|
|
|
|
|
// pdo_pgsql need to be disabled
|
|
|
|
|
if ($this->builder->getExt('pdo_pgsql') !== null) {
|
|
|
|
|
throw new WrongUsageException('swoole-hook-pgsql provides pdo_pgsql, if you enable pgsql hook for swoole, you must remove pdo_pgsql extension.');
|
|
|
|
|
}
|
|
|
|
|
// enable swoole pgsql hook
|
|
|
|
|
return '--enable-swoole-pgsql';
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-04 11:25:35 +08:00
|
|
|
public function runCliCheckUnix(): void
|
2024-01-03 10:31:21 +08:00
|
|
|
{
|
|
|
|
|
// skip if not enable swoole
|
|
|
|
|
if ($this->builder->getExt('swoole') === null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
[$ret, $out] = shell()->execWithResult(BUILD_ROOT_PATH . '/bin/php --ri "swoole"', false);
|
|
|
|
|
$out = implode('', $out);
|
|
|
|
|
if ($ret !== 0) {
|
|
|
|
|
throw new RuntimeException('extension ' . $this->getName() . ' failed compile check: php-cli returned ' . $ret);
|
|
|
|
|
}
|
|
|
|
|
if (!str_contains($out, 'coroutine_pgsql')) {
|
|
|
|
|
throw new RuntimeException('swoole pgsql hook is not enabled correctly.');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|