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
«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.