Может ли кто-нибудь сказать мне, почему функция exec()
настолько медленна и непредсказуема на разных машинах в PHP?
В основном у меня есть исполняемый файл и вы хотите выполнить его через PHP:
$command = '/usr/pathToComman/myCommand -someParameters'; exec($command);
Дело в том, что он выполняется намного дольше (по большому счету я имею в виду 3-4 иногда, как в 25 раз дольше), то та же команда из оболочки.
В дополнение к этому команда выполняется дольше с PHP на моем сервере, что сильнее (больше ОЗУ и более ГГц).
Итак, есть два вопроса:
PS Мне нужно это выполнить, потому что я не могу сделать то же самое с PHP
PS2 Ответ на вопрос @prodigitalson: он решает дифференциальное уравнение, но в основном независимо от того, что он делает, скорость намного медленнее. Я помню, что делал обработку изображений таким образом, и скорость была намного медленнее.
Проблема в том, что это медленнее, вероятно, потому, что ваш PHP-сервер должен перейти в оболочку для запуска вашей команды. Итак, что делает сервер PHP, это создать новую оболочку и вызвать команду в новой оболочке. Создание новой оболочки означает, что в большинстве систем создается новый поток. Таким образом, все эти вещи приводят к более длительному времени выполнения.
Иногда скрипт cgi может помочь с этими проблемами, но я не уверен, что это поможет здесь (потому что я действительно не знаю, что вы пытаетесь сделать в оболочке)