задача запустить perl скрипт из вебинтерфейса, скрипт работает 5-10 минут.
думал реализовать так:
запускается скрикт, форкается
парент отдает сообщени - ожидайте ..
чайл делает setsid выполняется, пишет свой статус в файл
веб интерфейс раз в 30 секунд делает запрос, читается файл статуса, обновляется статуспроблема в том, что апач висит и ждет пока все процессы завершатся
>задача запустить perl скрипт из вебинтерфейса, скрипт работает 5-10 минут.
>думал реализовать так:
>запускается скрикт, форкается
>парент отдает сообщени - ожидайте ..
>чайл делает setsid выполняется, пишет свой статус в файл
>веб интерфейс раз в 30 секунд делает запрос, читается файл статуса, обновляется
>статус
>
>проблема в том, что апач висит и ждет пока все процессы завершатся
>background не пробовал? )
поясните
>пояснитеиз cgi запускать нужный скрипт деманом
Ну все-таки это перл, а не шелл и демонизироваться лучше самостоятельно, что судя по использованию setsid и пытался сделать автор.
Автору я бы посоветовал отладить для начала без апача, а если не получается самостоятельно решить проблему, то нужно показать минимально возможный код, демонстрирующий проблему. Например следующий демонстрационный код спокойно форкается из под апача, родитель выдает сообщение, а потомок демонизируется и живет еще пять минут. Никакие процессы апача при этом не висят.#!/usr/bin/perl
use strict;
print "Content-type: text/html\n\n";
if (my $pid=fork) {
print "done: $pid";
exit;
} else {
use POSIX qw(setsid);
open STDIN, '/dev/null';
open STDOUT, '>/dev/null';
open STDERR, '>/dev/null';
setsid;
for (1..5) {
open FH,">fork_test";
print FH $_;
close FH;
sleep(60);
}
}
гы ну и пусть perl ) а что теперь запретили cgi скрипты на шеле писать? )
>гы ну и пусть perl ) а что теперь запретили cgi скрипты
>на шеле писать? )проблема решена, как вцелом и было понятно алгоритм верный проблема в кривых руках.
надо закрывать stdin и stdout
в шеле все работало - он не