stillwaiting
Новичок
sleep(), fsockopen() и пр блокируют выполнение session_init() (парадокс дня)
Пребываю в шоке. И вот по какому поводу:
Исходные данные:
http://sapper4ever.net/test/lock.php - инициализирует сессию, спит 20 секунд и пишет время выполнения себя любимого.
http://sapper4ever.net/test/simplescript.php - замеряет время инициализации сессии.
http://sapper4ever.net/test/info.php
Эксперимент:
запускаю simplescript.php, он выдает:
запускаю lock.php, он выдает:
запускаю сначала lock.php, потом паралельно simplescript.php. simplescript.php выдает:
Вопросы:
1. Это - нормальное поведение?
2. Какие варианты, чтобы simplescript не дожидался завершения sleep() у lock.php а чтобы они работали паралельно не мешая друг другу? Самый простой: выключать сессии перед sleep(), затем включать обратно.
PS. Такая же фигня происходит если sleep заменить на fsockopen (непроверенная информация).
Очень надеюсь на помощь, поддержку и взаимопонимание.
Спасибо за внимание!
-~{}~ 25.07.08 11:56:
PPS в 5-м php такая же фигня (на хостинге где проходил эксперимент 4-й).
Пребываю в шоке. И вот по какому поводу:
Исходные данные:
http://sapper4ever.net/test/lock.php - инициализирует сессию, спит 20 секунд и пишет время выполнения себя любимого.
PHP:
<?php
$start = time();
session_start();
sleep(20);
echo "I'm the Locker!, execution time: ".(time() - $start);
// Show file content
$content = file_get_contents($_SERVER['SCRIPT_FILENAME']);
echo "<pre>".htmlspecialchars($content)."</pre>";
?>
PHP:
<?php
ob_start();
$start = time();
echo "Point1 - before session_start() : ".(time() - $start)."<br />";
session_start();
echo "Point2 - after session_start() : ".(time() - $start)."<br />";
ob_end_flush();
// Show file content
$content = file_get_contents($_SERVER['SCRIPT_FILENAME']);
echo "<pre>".htmlspecialchars($content)."</pre>";
?>
PHP:
<?php
echo phpinfo();
?>
запускаю simplescript.php, он выдает:
Код:
Point1 - before session_start() : 0
Point2 - after session_start() : 0
Код:
I'm the Locker!, execution time: 20
Код:
Point1 - before session_start() : 0
Point2 - after session_start() : 19
1. Это - нормальное поведение?
2. Какие варианты, чтобы simplescript не дожидался завершения sleep() у lock.php а чтобы они работали паралельно не мешая друг другу? Самый простой: выключать сессии перед sleep(), затем включать обратно.
PS. Такая же фигня происходит если sleep заменить на fsockopen (непроверенная информация).
Очень надеюсь на помощь, поддержку и взаимопонимание.
Спасибо за внимание!
-~{}~ 25.07.08 11:56:
PPS в 5-м php такая же фигня (на хостинге где проходил эксперимент 4-й).
