Страницы

Поиск по вопросам

пятница, 5 апреля 2019 г.

пишем на php cli

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


Ответ

Допустим, у вас есть компьютер с 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 example_user@example.org), попадаете в консоль и запускаете 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.

Комментариев нет:

Отправить комментарий