Почему PHP exec() такой медленный?

Уже давно заметил, что любые ресурсоемкие операции, выполненные через PHP функцию exec() занимают в разы, а иногда на порядок больше времени, нежели вызов из консоли.


Например, convert Имэдж-мэджика работает раз в десять медленней, чем вызов из консоли.


Кто-нибудь сталкивался? Как это обойти? Выносить вызовы из PHP через систему очередей? Какие варианты существуют? И главное почему так происходит?
  • Вопрос задан
  • 6105 просмотров
Пригласить эксперта
Ответы на вопрос 3
BeLove
@BeLove
security
такой метод не проверяли?
<?
`echo hello > ~/hello`
?>
использую его, вроде проблем нет. Точных отличий от shell_exec, exec, system не знаю.
Ответ написан
Nastradamus
@Nastradamus
Мм. А попробуйте shell_exec() таким способом:

$e = "/usr/bin/nohup /home/work/some_script.sh > /dev/null 2>&1 &";
shell_exec("$e");


Скрипт some_script.sh научить расставлять семафоры, а потом как-нить через AJAX опрашивать статус выполнения скрипта.
Ответ написан
igor32
@igor32
PHP backend программист
Попробуйте вот такой способ:

$cmd = 'git log';
$result = null;
$process = proc_open($cmd, [1 => ['pipe', 'w']], $pipes, null, null, array('suppress_errors' => true));
if (\is_resource($process)) {
    $result = stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    proc_close($process);
}
        
var_dump($result);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы