php system exec разница

Русские Блоги

Сравнение внешних команд системы исполнения PHP

PHP выполняет системные внешние команды: exec (), passthru (), system (), shell_exec ()

Способ 1: exec ()

exec не выводит результат при выполнении системной внешней команды, но возвращает последнюю строку результата. Если вы хотите получить результат, вы можете использовать второй параметр, чтобы вывести его в указанный массив. Одна запись этого массива представляет строку вывода, то есть, если Если выходной результат содержит 20 строк, этот массив содержит 20 записей, поэтому, если вам нужно многократно выводить результаты вызова различных системных внешних команд, вам лучше очистить этот массив при выводе результатов каждой внешней системной команды, чтобы избежать путаницы. Третий параметр используется для получения кода состояния выполнения команды, обычно он возвращает 0 в случае успеха.

Способ 2: passthru ()

Разница между passthru и system заключается в том, что passthru напрямую выводит результаты в браузер, не используя echo или return для просмотра результатов, не возвращает никакого значения и может выводить двоичные данные, например данные изображения.

Разница между passthru и system заключается в том, что passthru напрямую выводит результаты в браузер, не используя echo или return для просмотра результатов, не возвращает никакого значения и может выводить двоичные данные, например данные изображения.

Способ 3: система ()

Разница между system и exec заключается в том, что когда система выполняет внешние команды системы, она напрямую выводит результаты в браузер, не используя echo или return для просмотра результатов.Если команда выполнена успешно, она возвращает true, в противном случае возвращает false. Второй параметр имеет то же значение, что и третий параметр exec.

Способ 4: Backapostrophe (`) и shell_exec ()

Функция shell_exec () на самом деле является просто вариантом оператора backtick (`)

Источник

Русские Блоги

Детальные подробности о Exec, системы и других системных команд вызова функции в PHP

РНР встроенных функций Exec, SYSTEM может вызвать системную команду (команда оболочки), конечно, есть такая функция, как PASSTHRU, EscapeShellCmd.

Примечание: Для того, чтобы использовать эти две функции, режим безопасности в php.ini должен быть выключен, или если PHP не разрешен вызывать системную команду.

Давайте посмотрим на объяснение PHP руководства по этим двум функциям:

Синтаксис: String Exec (String Command [, массив & Output [, INT & return_var]])

EXEC анализ функции

Exec синтаксис:string exec(string command, string [array], int [return_var]);

EXEC Возвращаемое значение: Строка

EXEC описание параметра

return_var –Является ли это возвращаемое значение 0 или 1, если она возвращает 0, то выполнение будет успешным, и возвращение не было выполнено.

EXEC безуспешный, отладка план

Наконечник должен использовать команду трубопровода. С помощью 2> & 1, то команда будет выводить сообщение об ошибке в переменной Output, когда оболочка выполняется, и переменная может быть проанализирована.

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

Если данный массив параметров и return_var, то команда выполняется статус будет записан в эту переменную.

Примечание: Если вы разрешаете информацию от пользователя, чтобы войти, вы можете перейти к этой функции, то вы должны использовать EscapeShellCmd (), чтобы определить этот пользователь не в состоянии малыша системы (TRICK) выполнить произвольную команду.

Синтаксис: System String (Командная строка [, INT & return_var])

Система () выполняет команду, и выводит результат. Если есть параметр return_var, код состояния команды исполнения будет записан.

Примечание: Если вы разрешаете информацию от пользователя, чтобы войти, вы можете перейти к этой функции, то вы должны использовать EscapeShellCmd (), чтобы определить этот пользователь не в состоянии малыша системы (TRICK) выполнить произвольную команду.

Если РНР работает в модуль сервоуправления, СИСТЕМА () будет автоматически очищать буфер вывода веб-сервера после вывода каждой строки.

Успех, последняя строка команды, не удалось, возвращается значение False.

Эти два используются для вызова команды оболочки системы,

Система выполнения PHP внешняя команда: EXEC (), PassThru (), система (), shell_exec ()

На сайте разработки PHP, внешние системные команды часто требуется. РНР предоставляет четыре пути для выполнения внешних системных команд: EXEC (), PassThru (), система (), shell_exec (). Ниже приводится презентация. Перед началом, проверьте конфигурационный файл php.ini PHP функция. Найти disable_functions следующие настройки:

Если «disable_functions =» имеет вышеуказанные четыре функции, удалите его. Файл конфигурации php.ini по умолчанию не запрещен быть вызваны из выполнения функции выполнения внешних команд.

Метод 1: EXEC ()

PHP код:

Исполнительный результат:

test.php
Array( [0] => index.php [1] => test.php)

Способ 2: Passthru ()

Исполнительный результат:

PASSTHRU отличается от системы, и PASSTHRU выводит результат в браузер, не нужно использовать Echo или Return, чтобы просмотреть результаты, не возвращают никаких значений, и он может выводить двоичный, такие, как данные изображения.

Способ 3: Система ()

Исполнительный результат:

Разница между системой и EXEC является то, что система выполняет внешнюю системную команду, и результат выводится непосредственно к вам не нужно использовать Echo или Return, чтобы просмотреть результаты. Возвращает TRUE, если команда выполнения успешно, в противном случае Возвращает false. Второй параметр такой же, как значения третьего параметра EXEC.

Способ 4:Антонизм` иshell_exec()

Функция shell_exec () на самом деле лишь вариант вводного ( `) оператора.

Источник

PHP exec() vs system() vs passthru()

What are the differences?

Is there a specific situation or reason for each function? If yes, can you give some examples of those situations?

PHP.net says that they are used to execute external programs. see reference From the examples I see, I don’t see any obvious difference.

If I were to simply run a script (bash or python), which function do you recommend me to use?

php system exec разница. Смотреть фото php system exec разница. Смотреть картинку php system exec разница. Картинка про php system exec разница. Фото php system exec разница

5 Answers 5

They have slightly different purposes.

Regardless, I suggest you not use any of them. They all produce highly unportable code.

php system exec разница. Смотреть фото php system exec разница. Смотреть картинку php system exec разница. Картинка про php system exec разница. Фото php system exec разница

The system function in PHP takes a string argument with the command to execute as well as any arguments you wish passed to that command. This function executes the specified command, and dumps any resulting text to the output stream (either the HTTP output in a web server situation, or the console if you are running PHP as a command line tool). The return of this function is the last line of output from the program, if it emits text output.

The exec() Function

The system function is quite useful and powerful, but one of the biggest problems with it is that all resulting text from the program goes directly to the output stream. There will be situations where you might like to format the resulting text and display it in some different way, or not display it at all.

For this, the exec function in PHP is perfectly adapted. Instead of automatically dumping all text generated by the program being executed to the output stream, it gives you the opportunity to put this text in an array returned in the second parameter to the function:

The shell_exec() Function

Most of the programs we have been executing thus far have been, more or less, real programs1. However, the environment in which Windows and Unix users operate is actually much richer than this. Windows users have the option of using the Windows Command Prompt program, cmd.exe This program is known as a command shell.

The passthru() Function

One fascinating function that PHP provides similar to those we have seen so far is the passthru function. This function, like the others, executes the program you tell it to. However, it then proceeds to immediately send the raw output from this program to the output stream with which PHP is currently working (i.e. either HTTP in a web server scenario, or the shell in a command line version of PHP).

The proc_open() Function and popen() function

proc_open() is similar to popen() but provides a much greater degree of control over the program execution. cmd is the command to be executed by the shell. descriptorspec is an indexed array where the key represents the descriptor number and the value represents how PHP will pass that descriptor to the child process. pipes will be set to an indexed array of file pointers that correspond to PHP’s end of any pipes that are created. The return value is a resource representing the process; you should free it using proc_close() when you are finished with it.

Источник

PHP | shell_exec () против функции exec ()

Функция shell_exec ()

Функция shell_exec () — это встроенная функция в PHP, которая используется для выполнения команд через оболочку и возврата полного вывода в виде строки. Shell_exec является псевдонимом для оператора backtick, для тех, которые используются для * nix. Если команда не выполнена, вернуть NULL и значения не являются надежными для проверки ошибок.

Синтаксис:

Параметры: Эта функция принимает один параметр $ cmd, который используется для хранения команды, которая будет выполнена.

Возвращаемое значение: эта функция возвращает выполненную команду или NULL, если произошла ошибка.

Примечание. Эта функция отключена, когда PHP работает в безопасном режиме.

Пример:

// Используем команду ls для shell_exec
// функция

$output = shell_exec( ‘ls’ );

// Показать список всех файлов
// и каталог

Выход:

Функция exec ()

Функция exec () — это встроенная функция в PHP, которая используется для выполнения внешней программы и возвращает последнюю строку вывода. Он также возвращает NULL, если ни одна команда не выполняется правильно.

Синтаксис:

Параметры: эта функция принимает три параметра, как указано выше и описано ниже:

Возвращаемое значение: эта функция возвращает выполненную команду, обязательно установите и используйте выходной параметр.

Пример:

// (в системе с исполняемым файлом «iamexecfunction» в пути)

Источник

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

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

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

Кто-нибудь сталкивался? Как это обойти? Выносить вызовы из PHP через систему очередей? Какие варианты существуют? И главное почему так происходит?

php system exec разница. Смотреть фото php system exec разница. Смотреть картинку php system exec разница. Картинка про php system exec разница. Фото php system exec разница

ImageMagick лишь пример.

0.051u 0.164s 0:00.43 48.8% 28+1500k 2+92io 3pf+0w

Вызов же из PHP представляет собой кошмар с шуршанием HDD.

php system exec разница. Смотреть фото php system exec разница. Смотреть картинку php system exec разница. Картинка про php system exec разница. Фото php system exec разница

php system exec разница. Смотреть фото php system exec разница. Смотреть картинку php system exec разница. Картинка про php system exec разница. Фото php system exec разница

php system exec разница. Смотреть фото php system exec разница. Смотреть картинку php system exec разница. Картинка про php system exec разница. Фото php system exec разница

Мм. А попробуйте shell_exec() таким способом:

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

Скрипт some_script.sh научить расставлять семафоры, а потом как-нить через AJAX опрашивать статус выполнения скрипта.

php system exec разница. Смотреть фото php system exec разница. Смотреть картинку php system exec разница. Картинка про php system exec разница. Фото php system exec разница

Скорее всего к этому и приду. Только не сырыми семаформаи, а с помощью любой системы очередей. потому что видимо проблема в PHP или Apache. Пока нет возможность проверить на FastCGI.

Дополнение: вызов PHP из консоли подтвердил мои подозрения, он сработал быстро. Что-то связанное с Apache и mod_php является причиной. Придется делать две очереди, одну на отправку сообщений, вторую на прием ответа, т.к. процесс синхронный, а потом попробовать распараллелить, т.к. сразу нужно выполнить несколько однотипных комманд

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *