imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 09.06.2006, 11:27     # 1
Face
Junior Member
 
Аватар для Face
 
Регистрация: 09.08.2005
Адрес: Свердловская область
Сообщения: 112

Face Известность не заставит себя ждать
Принудительный обрыв связи

Можно ли как-нибудь (командой на PHP или JS) сделать так, чтобы при выполнении скрипта сервер прекращал работу с браузером (чтобы соединение не "висело"), а скрипт еще продолжал работать (например продолжал обработку mysql-таблицы)?

Последний раз редактировалось Face; 09.06.2006 в 11:44.
Face вне форума  
Старый 09.06.2006, 13:20     # 2
Псих
::VIP::
Guinness Liker
Понаехало тут
 
Аватар для Псих
 
Регистрация: 26.01.2003
Адрес: В нейроне
Пол: Male
Сообщения: 2 848

Псих СуперБогПсих СуперБог
Псих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБог
Вопрос немного не понятен.
Ну делаешь ты например mysql_query()... потому сделай mysql_close(db), закинь результат в массив и работай...
или я не про то дувмаю?
Сервер закроет коннект с бд. а скрипт будет выполнятся далее
__________________
меня не вылечат
Псих вне форума  
Старый 09.06.2006, 14:08     # 3
Naked
::VIP::
 
Аватар для Naked
 
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194

Naked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked Сэнсэй
Цитата:
Face:
скрипт еще продолжал работать
можно в скрипте, который исполняется на вебе сделать вызов другого скрипта командой system() только вызывать скрипт другой и перед ним поставить @, т.е. system ("@script.pl"), тогда скрипт script.pl запустится в бэкграунде, и при прекращении выполнения вебовского скрипта он не должен прекратиться...
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным.
Naked вне форума  
Старый 09.06.2006, 14:21     # 4
Face
Junior Member
 
Аватар для Face
 
Регистрация: 09.08.2005
Адрес: Свердловская область
Сообщения: 112

Face Известность не заставит себя ждать
Псих, я это хочу сделать чтобы после выполнения скрипта запускалась какая-нибудь фоновая задача (секунд на 20). Так приходится делать, потому что cronа нету на сервере.

Naked, такой вариант не подходит, т.к. на сервере отключены функции: dl, shell_exec, exec, system, passthru, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo
Face вне форума  
Старый 09.06.2006, 14:34     # 5
Naked
::VIP::
 
Аватар для Naked
 
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194

Naked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked Сэнсэй
Цитата:
Face:
Так приходится делать, потому что cronа нету на сервере
думаю нужно либо менять сервер, либо увеличивать таймаут выполнения скрипта, в фоне вроде нельзя запустить не используя командную строку... Опиши полностью проблему, потому что, если тебе нужно, чтобы пользователю вывелась нормальная страничка а в паралели выполнился скрипт, то скрипт можно выполнять в нулевом фрейме или что-то типа того...
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным.
Naked вне форума  
Старый 09.06.2006, 14:39     # 6
Face
Junior Member
 
Аватар для Face
 
Регистрация: 09.08.2005
Адрес: Свердловская область
Сообщения: 112

Face Известность не заставит себя ждать
Naked, сервер поменять никак не получится... Просто я хочу сделать замену cronа... Чтобы после открытия любой страницы сайта, если подошло время запуска определенного скрипта, он запускался, но т.к. он не выводит никакого текста клиенту, мне нужно чтобы связь разорвалась, а скрипт продолжал работу.
Face вне форума  
Старый 09.06.2006, 21:15     # 7
aoxyz_30330
Junior Member
 
Аватар для aoxyz_30330
 
Регистрация: 22.05.2004
Сообщения: 112

aoxyz_30330 Мелкий засранец
Цитата:
Чтобы после открытия любой страницы сайта, если подошло время запуска определенного скрипта, он запускался, но т.к. он не выводит никакого текста клиенту, мне нужно чтобы связь разорвалась, а скрипт продолжал работу.
register_shutdown_function() - ето php. таким образом зарегеная функция никакого вывода в stdout делать не будет и не должна, и будет запускацца при завершении скрипта

вообше же можно просто делать вложениэ своего скрипта (который есессна делает что надо в зависемости от определенного интервала или условия но ничего не выводит) в каждую запускаeмую страницу ...

Последний раз редактировалось aoxyz_30330; 09.06.2006 в 21:21.
aoxyz_30330 вне форума  
Старый 09.06.2006, 21:42     # 8
Face
Junior Member
 
Аватар для Face
 
Регистрация: 09.08.2005
Адрес: Свердловская область
Сообщения: 112

Face Известность не заставит себя ждать
Цитата:
aoxyz_30330:
register_shutdown_function() - ето php. таким образом зарегеная функция никакого вывода в stdout делать не будет и не должна, и будет запускацца при завершении скрипта
не должна, но делает... к примеру скрипт:
PHP код:
<?
function sleep1() {
    sleep(10);
    echo 'sleep';
}
register_shutdown_function('sleep1');
echo 'test ';
exit();
?>
браузер при запросе этого скрипта ждет 10 секунд, а потом выводит "test sleep"

Цитата:
aoxyz_30330:
вообше же можно просто делать вложениэ своего скрипта (который есессна делает что надо в зависемости от определенного интервала или условия но ничего не выводит) в каждую запускаeмую страницу ...
Я так и буду делать, но мне нужно, чтобы вложенный скрипт выполнялся уже при разорванном соединении с браузером...
Face вне форума  
Старый 10.06.2006, 02:12     # 9
aoxyz_30330
Junior Member
 
Аватар для aoxyz_30330
 
Регистрация: 22.05.2004
Сообщения: 112

aoxyz_30330 Мелкий засранец
ага ... все, понял, извени ...

вообше ето странно, т.к. в доках пишут

Цитата:
Зарегистрированные register_shutdown_function() функции будут вызваны после того, как запрос выполнен окончательно (включая отсылку любых буферов вывода), соответственно вы не сможете из этих функций вывести что-либо в броузер, используя echo() или print(), или возвратить содержимое какого-либо буфера вывода, используя ob_get_contents().
нада подумать ...

мда, тока ета, я не понимаю зачем тебе там чтото выводить ... если всеравно выводить ничего ненадо ... мда ... тем более если у тебя все функции на ету тему отключены ...

ето ... нехочу разочаровывать, но ... если функции типа exec, system и т.д. не разрешены, то ето значит, что из скрипта ты не можеш породить нового процесса, который бы продосжал существовать после завершения работы етого скрипта ... а ето в свою очередь значит, что так как ты хочеш не получится - ибо все что бы ты не предпринимал из скрипта, будет работать в рамках одного процесса и умрет естественно с ним вместе (в данном случае при разрыве соединения). единственный выход - ето ставить задачи так, чтобы они работали в моменты наименьшей загрузки сервака, гдето ночю например... обрати внимание - даже заход поискового бота сможет привести к выполнению задач ... например поставь задачу каждый день после 24 ... то есть первый заход после 24 запускает задачу ... и не забывай про ignore_user_abort() на всякий пожар...

Последний раз редактировалось aoxyz_30330; 10.06.2006 в 02:22.
aoxyz_30330 вне форума  
Старый 10.06.2006, 06:15     # 10
Face
Junior Member
 
Аватар для Face
 
Регистрация: 09.08.2005
Адрес: Свердловская область
Сообщения: 112

Face Известность не заставит себя ждать
Всем спасибо. Проблему запуска второго скрипта решил так:
PHP код:
$sock = @fsockopen($server80$errno$errstr1);
if (
$sock) {
    
stream_set_timeout($sock1);
    
$out "GET /?mod=test&id1=4444&id2=4447 HTTP/1.1\r\n";
    
$out .= "Host: $server\r\n";
    
$out .= "Connection: Close\r\n\r\n";
    
fwrite($sock$out);

Face вне форума  
Старый 11.06.2006, 02:18     # 11
aoxyz_30330
Junior Member
 
Аватар для aoxyz_30330
 
Регистрация: 22.05.2004
Сообщения: 112

aoxyz_30330 Мелкий засранец
мда .. ну в общем ето принципиально не то что ты хотел, но канает ... наверное, хотя надежности не 100% ... ибо сеть ...
aoxyz_30330 вне форума  
Старый 12.06.2006, 10:22     # 12
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
А ignore-user-abort разве не для этого придумывался?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 14.06.2006, 01:00     # 13
aoxyz_30330
Junior Member
 
Аватар для aoxyz_30330
 
Регистрация: 22.05.2004
Сообщения: 112

aoxyz_30330 Мелкий засранец
ненаю для чего ignore_user_abort придумывался ... но просто если ты чтото запрашиваеш по сети (как в твоем примере по сокету), то если сеть не доступна в етот момент, то сам понимаеш ... а усер_аборт заставляет просто выполнятся локальный скрипт до конца, несмотря на разрыв связи ... кстати, ты всетаки лучше по методу пост запрашивай, так оно немного безопаснее - ибо если ктонить найдет твой крон и начнет его выполнять направо и налево, то хорошего мало (а в данном варианте ето прямо из адресной строки брayсера мона . )...
aoxyz_30330 вне форума  
Старый 15.06.2006, 16:24     # 14
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
aoxyz_30330:
а усер_аборт заставляет просто выполнятся локальный скрипт до конца, несмотря на разрыв связи
Дак именно это и надо было вроде, насколько я понял:
Цитата:
Face:
Я так и буду делать, но мне нужно, чтобы вложенный скрипт выполнялся уже при разорванном соединении с браузером...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:53.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.