параллельная обработка — параллелизм в переполнении стека

Я хочу оптимизировать часть своего кода для повышения производительности. Так как мое приложение использует инструмент командной строки, я думаю, что это, безусловно, повысит производительность, выполняя строки кода параллельно, а не последовательно.

<?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() завершить

1

Решение

К сожалению, 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

0

Другие решения

Для быстрого и грязного способа освобождения потока 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 немного.

0

По вопросам рекламы [email protected]