Я хочу оптимизировать часть своего кода для повышения производительности. Так как мое приложение использует инструмент командной строки, я думаю, что это, безусловно, повысит производительность, выполняя строки кода параллельно, а не последовательно.
<?php
$value = exec("command goes here"); //this takes time
/* Some instructions here that don't depend on $value */
/* Some instructions here that don't depend on $value */
$result = $value*2 ; //this is just a dumb example
?>
Я хочу выполнить коды, которые не зависят от значения в то же время, что и $value
так что весь сценарий выполняется быстрее, чем ожидание exec()
завершить
К сожалению, PHP всегда унывает от параллелизма, параллелизма, … программирования.
и я никогда не знаю, почему PHP не поддерживает эти важные вещи и КОГДА PHP ХОЧЕТ ПОДДЕРЖАТЬ ЭТО !!
но, возможно, вы захотите использовать Fork в php (если вы знаете проблемы и проблемы в Fork)
http://php.net/manual/en/function.pcntl-fork.php
https://codereview.stackexchange.com/questions/22919/how-to-fork-with-php-4-different-approaches
Для быстрого и грязного способа освобождения потока php от блокирующего потока exec, вы можете просто добавить команду с помощью «&» или же «& disown «. В приведенном ниже примере я также перенаправил все ошибки и стандартный вывод в / dev / null. (Я предполагаю, что система Linux и просто использовал простую команду, которая может занять некоторое время …)
$command = "mv oldFolder/hugeFile.txt newFolder/hugeFile.txt >> /dev/null 2>&1 &";
$value=exec($command);
Если вам действительно нужно возвращаемое значение из $ command, просто удалите >> /dev/null 2>&1
немного.