Перейти к содержимому

Php cli что это

  • автор:

Php cli что это

Основная цель этого CLI SAPI — разработка консольных приложений на PHP. Есть довольно много различий между CLI SAPI и другими видами SAPI , которые будут рассмотрены в этой главе. Стоит отметить, что CLI SAPI и CGI — различные SAPI -интерфейсы, хотя в их поведении много общего.

CLI SAPI включается по умолчанию с помощью опции —enable-cli, но может быть выключен опцией —disable-cli при запуске ./configure.

Имя, расположение и существование бинарных модулей CLI / CGI зависит от того, как именно установлен PHP в вашей системе. По умолчанию при выполнении make создаётся как CGI -, так и CLI -модуль, размещённые в директориях sapi/cgi/php-cgi и sapi/cli/php соответственно, внутри директории с исходниками PHP. Следует заметить, что оба файла имеют одинаковое название: php . Что произойдёт при выполнении make install, зависит от того, какие опции вы указали на стадии конфигурирования. Если выбран модуль SAPI во время выполнения, например, apxs, или используется опция опция —disable-cgi, модуль CLI будет скопирован в /bin/php при выполнении make install, в противном случае будет скопирован CGI -модуль. Например, если задана опция —with-apxs, то при выполнении make install CLI -версия будет скопирована в /bin/php . Если вы хотите переопределить установку CGI -модуль, используйте make install-cli после выполнения make install. В качестве альтернативы вы могли бы указать опцию —disable-cgi в строке конфигурации.

Замечание:

Поскольку обе опции, —enable-cli и —enable-cgi, включены по умолчанию, просто наличие —enable-cli в команде конфигурации необязательно означает, что CLI будет скопирован в /bin/php при выполнении make install.

Бинарный файл CLI входит в дистрибутив для Windows в основной папке в качестве файла php.exe . CGI -версия находится в файле php-cgi.exe . Кроме того, в дистрибутив входит файл php-win.exe , если PHP был сконфигурирован с помощью —enable-cli-win32. Он полностью эквивалентен CLI -версии, за исключением того, что абсолютно ничего не выводит, и, таким образом, не предоставляет консоль (окно терминала не появляется на экране).

Замечание: Какой из вариантов SAPI установлен?

Выполните из командной строки php -v для получения информации о том, является ли php CGI или CLI . Также вы можете использовать функцию php_sapi_name() или константу PHP_SAPI .

Замечание:

Соответствующую страницу руководства ( man ) Unix можно просмотреть с помощью команды man php в консоли.

Разработка консольных приложений и автоматизация задач на PHP: старый добрый язык как знакомая замена Bash

Обложка поста Разработка консольных приложений и автоматизация задач на PHP: старый добрый язык как знакомая замена Bash

«Bash? Беляш? Эммм… Что? Как? По-че-му?» — если именно эти слова произносил ваш внутренний голос, когда вы, начитавшись статей в интернете, решили с помощью Bash автоматизировать ту рутинную задачу, то эта статья для вас. И она ещё более для вас, если вы уже знаете PHP — сейчас вы узнаете также то, что PHP отлично подходит не только для разработки сайтов, но и для консольных приложений.

Предполагается, что вы используете Linux и знаете PHP не ниже начального уровня:

пишем на php cli

Добрый вечер. Часто приходится писать скрипты на php (одноразовые), перенос данных с одного сайта на другой, парсинг и т.д. Выполнения скрипта может занимать 30-100 мин. Естественно запуская скрипт через обычный браузер, обращаясь через http к скрипту, то сервер после некоторого времени (30, 60, 120) сек, возвращает 503, разрывает соединение. Разные настройки сервера не помогают. Читал, что помогают в таких случаях, писать php скрипты под консоль. Так называемый php cli. Подскажите пожалуйста, как мне это сделать? Предположим у меня есть хостинг со скриптами, мои дальнейшие действия? Не могу разобраться, где открыть эту консоль и т.д. Насколько я понял, php cli это просто такой режим запуска интерпретатора, с некоторыми параметрами.

Отслеживать
5,764 20 20 серебряных знаков 32 32 бронзовых знака
задан 6 авг 2016 в 21:04
33 1 1 серебряный знак 3 3 бронзовых знака

по поводу 503. Скорее всего, всё от того, что браузер не получает никакой информации. у них есть свои ограничения на время получения ответа.если на ajax можно задать время ожидания то с пхп нужно делать что-то на сервере. когда писал парсеры я их обманывал(браузеры), отдавая браузеру хоть что-то. (к примеру print »;\flush()) тем самым браузер получает вывод и не закрывает соединение. так же не забываем про сам разрыв. если он происходит то выполнение может и оборваться.

6 авг 2016 в 22:22

не забываем указывать max_exec~_time\max_memory_limit\оптимизировать сам скрипт. в случае с одним apache не замечал разрыва соединения, в случае когда nginx как прокси, не забываем про всякие proxy_send_timeout\и настройки не прерывать выполнение при разрыве соединения. к сожалению по памяти все настройки не помню, поэтому и написать мог названия тоже не правильно. Надеюсь чем то полезным удалось поделиться. а так советую писать асинхронные приложения, возможно используя другие технологии например nodejs, что увеличит скорость работы ваших парсеров

6 авг 2016 в 22:26

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Допустим, у вас есть компьютер с Windows. Вы можете открыть консоль и набрать там какие-нибудь команды. набрать dir и и получить список каталогов и файлов, скопировать файлы командой copy : copy c:\a.txt d:\b.txt

это консоль Windows. Если на вашем компьютере установлен php, вы можете открыть консоль, набрать что-нибудь вроде c:\lamp\php\bin\php -i и увидеть настройки php.

Теперь представьте себе ваш хостинг. Операционная система, но не Windows, а Linux. Скорее всего у него нет графической оболочки. Единственный ваш способ общения с ним — через командную строку.

PHP CLI расшифровывается именно так: Command Line Interface. Интерфейс командной строки.

Если у вас есть ssh-доступ к вашему сайту, вы сможете им воспользоваться чтобы запускать php-скрипты в консоли, творить прочую консольную магию.

Заходите через ssh на ваш хост (ssh [email protected]), попадаете в консоль и запускаете php ваш_скрипт.php

главные отличия между php-cli и «php через браузер»:

1) php-cli выполняется с правами пользователя, который его запускает, php-через-браузер выполняется с правами «пользователя» веб-сервера.

2) Вы можете запустить что-нибудь в духе sudo php someFile.php и выполнить его с правами рута (самого главного пользователя в системе)

3) В php-cli по умолчанию нет ограничения по времени выполнения скрипта.

Если вы, допустим, подзабыли, как в принципе работает php — напомню. вашему серверу (apache, nginx) прилетает запрос — допустим на index.php — сервер посылает этот запрос демону php-fpm, который исполняет файл index.php, а результаты отправляет серверу, а сервер — вашему браузеру.

Это как если бы вам приходило письмо от друга с просьбой зайти в консоль, выполнить какой-то php-скрипт и прислать результат выполнения обратно.

Только гораздо быстрее.

В принципе, так интерпретаторы языков программирования и работают, на самом деле — через консоль. Поддержка веб-сервера полностью факультативна.

Детали и настройки вы можете найти в мануале PHP.

Настройка PHP CLI в Eclipse

Нередко возникает необходимость написать небольшую утилиту «для себя», выполнения каких-нибудь рутинных задач. Часто для ее работы даже не требуется визуальный интерфейс, достаточно командной строки. Можно, конечно разобраться с интерпретатором командной строки, например Bash, но если вы уверенно владеете PHP и у вас нет времени или желания 🙂 учить новый синтаксис, то это как раз тот случай, когда можно и нужно настроить модуль PHP-CLI. CLI — Command Line Interface — интерфейс командной строки.
Итак, для работы в Эклипсе через интерфейс PHP CLI нужно выполнить некоторые настройки. Они не сложны но имеют ряд особенностей.

Софт

Указанные ниже манипуляции проводились на:

Операционная система: Ubuntu 16.04 (Xenial Xerus)

Веб сервер: Apache/2.4.18

IDE: Version: Neon.2 Release (4.6.2)

Процесс установки.

Для начала необходимо установить модуль PHP-CLI.

-Для этого в терминале выполняем:

$ sudo apt-get install php-cli

-Открываетм Eclipse и переходим:

Name: PHP7 (или любое имя по вашему вкусу)

Executable path: (у меня: /usr/bin/php7.0) или нажимаем «Browse» и указываем путь к исполняемому файлу.

PHP ini file: — можно оставить пустым и поставить галочку ниже: Use system default PHP ini configuration. Тогда будет использоваться файл PHP ini по умолчанию. Что собственно в большинстве случаев устраивает.

SAPI type: CLI

Жмем «Next» и переходим на вкладку настройки отладчика. У меня это XDebug,выбираем его.

Порт по умолчанию 9000, если вы не меняли его то так и оставляем.

Если появляется предупреждение что какая-то библиотека не может быть загружена, то комментим ее в php.ini. У меня такое случилось, когда использовал PHP 5.6, в PHP 7 не наблюдал никаких ошибок.

В настройках проекта: выбираем «Debug Configurantion«, в списке выбираем PHP CLI application и создаем новую конфигурацию.

Runtime PHP: выбираем нужную версию PHP. В большинстве случаев достаточно оставить все как есть.

PHP file: указываем файл для запуска. Путь вручную редактировать не надо.

Таким образом, мы настроили работу модуля CLI.

Для того, чтобы в терминале запустить скрипт PHP достаточно ввести команду:

$ PHP /путь к файлу скриптa/имя файла.php

При запуске в Eclipse вывод информации будет в консоль самой среды.

Если консоль не отображается, выберите: Window->Show view->Console.

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

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