Что-то я не пойму откуда беруться тормоза.
Общий смысл такой. Делаю поисковый механизм по БД mysql. Результаты выборки сразу сбрасываются во внешний файл. Запрос mysql я запускаю в форке - фоном. В основном процессе отслеживаю либо завершение запроса, либо наличие в файле результата определенного количества строк.
Схема кода:
if (...)
{
...
$SIG{CHLD} = 'IGNORE';
my $pid = fork();
if ($pid eq '0')
{
$r->cleanup_for_exec();
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
open STDOUT, '>/dev/null' or die "Can't write to /dev/null: $!";
open STDERR, '>/tmp/log' or die "Can't write to /tmp/log: $!";
my $setsidres = POSIX::setsid();
eval {
$dbho->do($sql);
};
open(FF, ">".$finishfile); print FF time(); close(FF);
CORE::exit(0);
};
...
open(LOG, ">>/tmp/fork_search.log"); print LOG time(), ": ok1...\n"; close(LOG);
};
open(LOG, ">>/tmp/fork_search.log"); print LOG time(), ": ok2...\n"; close(LOG);
Вот в данном случае между двумя последними выводами в LOG проходит много времени, а конкретно - пока не завершиться процесс-потомок.
Может я что-то упустил? Почему выполнение второго вывода в лог привязано к завершению дочернего процесса?

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Буфер вывода в Perl - как отключить? (вывод от wine) (2012)
- Форум двунаправленный канал через ssh на perl (2003)
- Форум помогите найти ошибки в следующем перловом коде (2004)
- Форум Perl + FastCGI + nginx (2009)
- Форум проблема с чтением из FIFO (2024)
- Форум Блокировка каналов ввода-вывода в линукс (2024)
- Форум создание дочерних процессов_ (2010)
- Форум Aapache перестает обрабатывать запросы. (2013)
- Форум Парсинг логов в MySQL с помощью Perl скрипта (2017)
- Форум Решил освоить perl =) (2005)