Зависание сервера.

  • Автор темы Автор темы zIP
  • Дата начала Дата начала

zIP

Новичок
Зависание сервера.

Не нашел куда запостить.

Win XP

Apach 2.0.55; PHP 5.1.2; MySql 4.0.18

Иногда происходит зависание сервера. Начинает грузиться какая нибудь страница большого объема и если прервать ее загрузку, то потом нельзя открыть вообще ничего.

Пишет узел найден. Начинается загрузка и дождаться окончания невозможно.

Если перегрузить сервер, все начинает работать нормально. Рестарт Апача не помогает.

Это может быть из-за использования такой функции:
PHP:
	if ($send != "no") {
		$sender_name = removecrlf(filter($sender_name, nohtml));
		$sender_email = removecrlf(filter($sender_email, nohtml));
		$message = filter($message, nohtml);
		$msg = "$sitename\n\n";
		$msg .= ""._SENDERNAME.": $sender_name\n";
		$msg .= ""._SENDEREMAIL.": $sender_email\n";
		$msg .= ""._MESSAGE.": $message\n\n";
		$to = $adminmail;
        	$mailheaders = "Content-Type: text/plain; charset="._CHARSET."\n";
		$mailheaders .= "From: $sender_name <$sender_email>\n";
		$mailheaders .= "Reply-To: $sender_email\n\n";
		mail($to, $subject, $msg, $mailheaders);
		echo "<P><center>"._FBMAILSENT."</center></p>";
		echo "<P><center>"._FBTHANKSFORCONTACT."</center></p>";
    echo "$mailheaders ";
	} elseif ($send == "no") {
		OpenTable2();
		echo "$name_err";
		echo "$email_err";
		echo "$message_err";
		CloseTable2();
		echo "<br><br>";
		echo "$form_block";
	}
 
а откуда мы знаем, что делают removecrlf(), filter(), OpenTable2() и CloseTable2() ?
 
Тогда перефразирую.

А как избежать зависания сервера? Как это ограничить в php.ini и конфиге апача?
 
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 30 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
 
в конфе апача
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300
 
zIP
ну я больше ничего не знаю
в апаче по дефолту 300 стоит
 
спасибо.

А если поставить.

max_execution_time = 30 ; Maximum execution time of each script, in seconds

Скрипт может вываливаться по таймауту при открытии файла через freead() или fopen() большого размера?
 
The maximum execution time is not affected by system calls, stream operations etc. Please see the set_time_limit() function for more details.
rtfm
 
Почитал. Ничего не понял.

Но самое интересное, что когда пхп стоял как исполняемое приложение к апачу, то проблем такого рода не было.

Но стоило его поставить как модуль... Тут и началась эта фигня.
 
Из install.txt, идущего в комплекте поставки с PHP
Apache 2.0.x on Microsoft Windows
...
Warning

We do not recommend using a threaded MPM in production with Apache2. Use the prefork MPM instead, or use Apache1. For information on why, read the related FAQ entry on using Apache2 with a threaded MPM
 
Из этого следует, что надо либо поставить пхп 4.х или Апач 1?
 
Сверху