Страницы

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

воскресенье, 2 февраля 2020 г.

пишем на php cli

#php


Добрый вечер. 

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

Читал, что помогают в таких случаях, писать php скрипты под консоль. Так называемый
php cli.

Подскажите пожалуйста, как мне это сделать?
Предположим у меня есть хостинг со скриптами, мои дальнейшие действия?
Не могу разобраться, где открыть эту консоль и т.д. 
Насколько я понял, php cli это просто такой режим запуска интерпретатора, с некоторыми
параметрами.
    


Ответы

Ответ 1



Допустим, у вас есть компьютер с 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.

Ответ 2



Найдите настройки SSH подключения вашего хостинга(как правило бесплатные хостинги не дают доступа, либо ограничивают его виртуальной консолью или php-cgi а не php-cli, если вам таки повезло и у вас есть доступ то подключитеcь через Putty(Windows), или просто набрав ssh и параметры подключения в терминале Linux) Дальше просто вызываете нужный скрипт уже из этой консоли. P.S. Рекомендую выносить скрипты подобные выше корня сайта, чтоб их не могли запустить из браузера а через консоль вы всё равно к ним достучитесь

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

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