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

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

Как еще?
...
Рейтинг: 0 / 0
17.07.2012, 16:56:17
    #37882582
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
Запустите из консоли да и все, там в конце какую-то закорючку надо поставить.
...
Рейтинг: 0 / 0
17.07.2012, 17:41:48
    #37882669
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
Ага, амперсандом та закорючка называется.
...
Рейтинг: 0 / 0
18.07.2012, 12:14:16
    #37883465
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
Так же интересует данный вопрос о запуске в фоне длительного процесса...
...
Рейтинг: 0 / 0
18.07.2012, 12:15:02
    #37883468
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
Ответили уже.
...
Рейтинг: 0 / 0
18.07.2012, 12:24:17
    #37883482
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
а как запустить скрипт из консоли из самого скрипта?
...
Рейтинг: 0 / 0
18.07.2012, 12:28:32
    #37883494
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
Отвечу сам:

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

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

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

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

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

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

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

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

Код: 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
18.07.2012, 19:16:24
    #37884408
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
пути скорее всего.
...
Рейтинг: 0 / 0
18.07.2012, 19:25:39
    #37884418
alekson
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
какие? скрипт в корне находиться - прямой путь указан
...
Рейтинг: 0 / 0
18.07.2012, 19:26:25
    #37884420
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
наивный чукотский парень.
echo getcwd();
...
Рейтинг: 0 / 0
18.07.2012, 19:40:51
    #37884439
alekson
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
там абсолютный путь указан, но создал скрипт в рабочем каталоге - результата также никакого.

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

рабочий вариант
...
Рейтинг: 0 / 0
18.07.2012, 19:57:43
    #37884456
alekson
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
Код: 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
18.07.2012, 22:17:31
    #37884560
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
Вот это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
19.07.2012, 11:40:54
    #37885048
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: выделить длительную операцию в отдельный процесс(скрипт). Как грамотно?
Все-таки как быть с длительными скриптами и работе из в фоне. если под финалить все?

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


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