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