Что-то я не пойму откуда беруться тормоза.
Общий смысл такой. Делаю поисковый механизм по БД 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)