powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
25 сообщений из 27, страница 1 из 2
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37882526
alekson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Операция - создание большого архива. Основной скрипт не должен ждать окончания её работы.

Варианты:
1. дернуть через http://
2. запустить из консоли

Как еще?
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37882582
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запустите из консоли да и все, там в конце какую-то закорючку надо поставить.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37882669
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, амперсандом та закорючка называется.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37883465
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же интересует данный вопрос о запуске в фоне длительного процесса...
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37883468
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответили уже.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37883482
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как запустить скрипт из консоли из самого скрипта?
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37883494
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отвечу сам:

shell_exec - выполняет команду в оболочке/shell и возвращает полный вывод в виде строки.

exec - выполняет внешнюю программу.

system - выполняет внешнюю программу и отображает вывод.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37883526
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При условии, что шелл-команды разрешены. Как правило, на шаред-хостинге они отключены.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37883531
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и я об этом читаю, а где тогда выход?
если надо выполнить долгую фоновую задачу?

Спасибо
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37883584
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тынц в тему

но это не решает проблему если стоит запрет выполнения шела на сервере.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37883587
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crontab ?
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37883611
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дак нужен же так же запуск шелл команды. нет?
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884105
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для запуска шелл-команд из пхп-скрипта нужно разрешение для пхп на использование соответствующих функций. Этого разрешения на шаред-хостинге нет, как правило.

Если есть крон или шелл-доступ - то разрешение на запуск шелл-команд есть для них (для крона) автоматически. Иначе они просто бесполезны )))) Возможно, не все команды доступны, но команда php должна быть доступной.

Еще момент. Часто на шаред-хостинге есть ограничение на время работы процесса. Типа, через 15 минут процесс будет безжалостно пристрелен, независимо от того, закончил он работу или нет.

Имеет смысл описать задачу подробнее, может быть, решение то совсем в другой стороне лежит :-)
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884107
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, часто есть вариант собрать и установить свой интерпретатор php, настроив его как надо, а не как у хостера :-)
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884407
alekson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неожиданная проблема

Код: php
1.
2.
3.
4.
5.
6.
$_command = "php -q /check.php < /dev/null > script.log &";
var_dump($_command);
var_dump(exec($_command));
var_dump(system($_command));
var_dump(passthru($_command));
var_dump(shell_exec($_command));



команда напрямую из консоли работает, через скрипт нет - в чем может быть дело?
Права 777 в корне.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884408
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пути скорее всего.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884418
alekson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какие? скрипт в корне находиться - прямой путь указан
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884420
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наивный чукотский парень.
echo getcwd();
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884439
alekson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
там абсолютный путь указан, но создал скрипт в рабочем каталоге - результата также никакого.

Отдельно команда работает: "php -q /var/www/.../httpdocs/tdd/check.php 82 < /dev/null > script.log &"
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884454
alekson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на скрипт не абсолютный путь, да

рабочий вариант
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884456
alekson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: php
1.
2.
3.
$_command = 'php -q /var/www/CL00048/current/httpdocs/tdd/check.php 82 < /dev/null > /script.log 2>&1 &';
var_dump($_command);
var_dump(exec($_command));



сори, случайно отправилось сообщение.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37884560
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот этоalekson
Код: php
1.
> /script.log

работать не должно при типовой настройке сервера. Правильным способом будет указание пути к файлу в домашней директории пользователя, а не за ее пределами, и уж никак не в корне файловой системы.

Еще момент. Служебные консольные скрипты есть смысл вынести за пределы директории сайта, конечно, если логика работы позволяет это сделать. Таким образом, во-первых, исключается их запуск через браузер напрямую (что будет, если Ваш check.php дернуть семь раз подряд с интервалом в три секунды?), и, во-вторых, сокращаются пути. Как пример, эту команду можно было бы записать так:
Код: php
1.
php -q ~/sbin/check.php 82 </dev/null >~/logs/script.log 2>&1 &

Разумеется, это будет работать если переменная окружения HOME задана правильно (содержит значение "/var/www/CL00048").
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37885048
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все-таки как быть с длительными скриптами и работе из в фоне. если под финалить все?

То есть если у хостера определенные настройки то про длит. фон. скрипты можно забыть и ничего тут не сделаешь?
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37885064
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну почему... Можно попытаться разбить один длительный процесс на несколько коротких.
...
Рейтинг: 0 / 0
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
    #37906972
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если операция логически монолитна, например какая либо обработка каталогов с файлами, а их может быть сотни. ?
И разбиение данной операции на куски(разиерность от чего будет плясать?) это будет награмождение и усложнение системы в целом.
ИМХО
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]