Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: "Вечный кайф"

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: проблема в работе скриптов (PHP5+Apache2)
giddy
Отправлено: 17 Августа, 2007 - 13:39:00
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2007  


Помог: 0 раз(а)




Джентльмены, нужна помощь в борьбе с глюком, имеющим кодовое название "вечный кайф" Улыбка.

Описываю явление.

Стоит на сервере апач 2/FreeBSD, php 5, кучка скриптов. Характерная картина: запускаем из браузера какой-нибудь php-скрипт, скрипт выдает в страницу браузера какой-нибудь текст, браузер ее выводит и... продолжает пытаться загружать страницу, хотя все что нужно было, на страницу уже выведено. Иконка загрузки крутится, прогресс-бар стопится где-то на 70-75%, и так может продолжаться _вечно_, пока не нажмешь на "стоп". Бывает, если на этом месте обновить страницу, то все нормально отрабатывает и процесс загрузки заканчивается, бывает наоборот: при первом обращении страница выводится нормально, а при повторном запуске того же скрипта - "вечный кайф" Улыбка

Причем если на хорошем канале все это еще терпимо - можно плюнуть и продолжать работать, функционально вроде бы не мешает, то на дайлапе или, упаси боже, gprs, страница может и вовсе не отобразиться в браузере, а просто повиснуть на этапе загрузки. В общем, разные юзеры на разных каналах, с разными браузерами, жалуются на примерно однотипные вышеописанные явления. А кто платит за трафик - жалуются, что данный процесс еще и трафик у них отъедает.

Сие наблюдается независимо от "тяжести" выводимой страницы - там может быть, например, несколько строк практически неформатированного текста. Если взять исходный текст выводимой страницы, сохранить как html и положить страничку на тот же сервер - вывод будет моментальным и загрузка в браузере завершится сразу после вывода содержимого. Вообще, статические страницы практически любого размера и наполнения выводятся без проблем. Из чего я делаю вывод, что собственно код тут ни при чем, а проблема, видимо, где-то между php и апачем. Буферизацию включал-отключал - никакого эффекта.

Может быть, кто-то сталкивался с такой бякой - пожалуйста, подскажите, где крутить, что копать? И перед юзерами неудобно, и самому на все это смотреть противно Недовольство, огорчение. В общем, хелп!!

 
 Top
valenok
Отправлено: 17 Августа, 2007 - 14:28:05
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А почти всегда проблема в скрипте.

В конце после вывода всего чего должно было быть выведеным по задумке ,
срабатывает бесконечный цикл или чтото на его подобии.

Давайте код одной из страниц которые зависают.

(Может быть порблема совсем не в этом, но чаще всего именно так)


-----
Truly yours, Sasha.
 
My status
 Top
giddy
Отправлено: 17 Августа, 2007 - 14:53:35
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2007  


Помог: 0 раз(а)




valenok пишет:
А почти всегда проблема в скрипте.

В конце после вывода всего тчо должно было по плану быть выведено, встал себе какойто то бесконечный цикл или чтото в этом роде.
Давайте код однгой из страниц которые зависают.
(Может быть порблема совсем не в этом, но чаще всего именно так)


Скрипт phpMyAdmin знаешь? Можно начать с него... Подмигивание

Ну или вот попроще страничка:
<?php
include "mysqlconfig.php";
include "fun.php";

set_time_limit(0);

$data = mysql_connect($base_name, $base_user, $base_pass);
if(!mysql_select_db($db_name,$data)){
echo mysql_error();
die();
}

$sqlqu = "SELECT vol from admin where 1 and k like 'iso_info'";
$sqldata = mysql_query($sqlqu);
$result = mysql_fetch_array($sqldata);
$iso_info = $result["vol"];

//echo "Список файлов iso /".$file."<br>";

$file = base64_decode($code);

exec($iso_info." -f -R -i '".$file."'",$echo);

for ($i=0; $i< count($echo);$i++) :
print $echo[$i]."<br>";
endfor;
exit();


?>

P.S. Код не мой Улыбка
 
 Top
valenok
Отправлено: 17 Августа, 2007 - 15:13:33
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Хороший код. Давайте его разберём..
(php код стоит заключать в теги [ php][/ php])

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include "mysqlconfig.php";
  4. include "fun.php";
  5.  
  6. // Эта строчка как раз позволяет работать скрипту столько - сколько ему влезет.
  7.  
  8. // Ваш код я чуть подправил. Ту часть которая не принципиальна - стёр
  9. $iso_info = mysql_result(mysql_query("SELECT `vol` FROM `admin` WHERE `k` = 'iso_info' LIMIT 1"),0,0);
  10.  
  11. // Тут сервер начинает выполнять некую операцию.
  12. // Тут вы как раз и начинаете ждать. Долго ждать. Пока сервер не закончит свою операцию.
  13. // Тоесть 70% уже позади, а вот тут он и повисает.
  14. // Иногда быстро проходит этот участок, иногда медленно. Иногда вообще не проходит из за неправильных параметров
  15. exec($iso_info." -f -R -i '".$file."'",$echo);
  16.  
  17. for ($i=0; $i< count($echo);$i++) :
  18. print $echo[$i]."<br>";
  19. endfor;
  20. echo "for loop is over";
  21.  
  22. ?>
  23.  


-----
Truly yours, Sasha.
 
My status
 Top
giddy
Отправлено: 17 Августа, 2007 - 15:29:14
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2007  


Помог: 0 раз(а)




"Тут" мы ждать не начинаем. Если бы мы "тут" ждали, то не получили бы вывода на страницу, который ниже, в цикле (print). А мы его получаем. Всегда. Прочитайте пожалуйста внимательно начало темы.
 
 Top
valenok
Отправлено: 17 Августа, 2007 - 16:05:28
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Цитата:
хотя все что нужно было, на страницу уже выведено

Всё может выводится в fun.php
и не факт что exec должно в результате чтото возвращать при положительном результате.

Но тем не менее если и phpmyadmin повисает
и вряд ли зависает exit..

А когда началась проблема?


-----
Truly yours, Sasha.
 
My status
 Top
giddy
Отправлено: 17 Августа, 2007 - 16:31:10
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2007  


Помог: 0 раз(а)




valenok пишет:

и не факт что exec должно в результате чтото возвращать при положительном результате.


Да не суть. Берем конкретный пример, когда заведомо известно, что именно должно быть выведено (в данном случае - содержимое образа iso, или в другой аналогичной функции - содержимое архива, или еще что-нибудь). Скрипт отработал, все содержимое выведено, дальше - см. начало.
valenok пишет:

Но тем не менее если и phpmyadmin повисает
и вряд ли зависает exit..

А когда началась проблема?

Скажем так, она была изначально.
 
 Top
valenok
Отправлено: 17 Августа, 2007 - 17:57:30
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Тогда обратитесь к хостинг провайдеру.
Возможно он решит проблему переустановкой программ.


-----
Truly yours, Sasha.
 
My status
 Top
giddy
Отправлено: 17 Августа, 2007 - 19:43:56
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2007  


Помог: 0 раз(а)




valenok пишет:
Тогда обратитесь к хостинг провайдеру.
Возможно он решит проблему переустановкой программ.


Сервер на colocation, все конфиги в нашем полном распоряжении. Я задал вопрос в надежде, что здесь найдутся опытные люди, сталкивавшиеся с данной конкретной проблемой и сумевшие ее побороть, и посему способные дать конкретный совет, в какую сторону копать и что именно крутить. А универсальные советы типа "глючит комп - переустанови винды" я сам умею давать ;)
 
 Top
evgenijj
Отправлено: 17 Августа, 2007 - 21:07:08
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Из книги Колисниченко "Linux. Полное руководство"
Цитата:

Иногда попадаются веб-страницы, которым требуется целая вечность, чтобы загрузиться. Если с одной и той же страницей это повторяется изо дня в день, то причина, скорее всего в следующем: код загружаемой страницы содержит ссылку на какой-то объект (картинку или баннер), расположенный на другом сервере, причем имя этого сервера невероятно трудно разрешить в IP-адрес. Вы думаете, что браузер "виснет", а на самом деле он ждет ответа от модуля распознавания имен (резолвера), который в свою очередь ждет ответа от сервера DNS.


Может быть, у тебя на страницах сайта какие-нибудь информеры или кнопочки типа SpyLOG?
 
 Top
giddy
Отправлено: 17 Августа, 2007 - 23:11:11
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2007  


Помог: 0 раз(а)




evgenijj пишет:

Может быть, у тебя на страницах сайта какие-нибудь информеры или кнопочки типа SpyLOG?


Ты невнимательно прочитал мой вопрос. Вот этот абзац:
===
Сие наблюдается независимо от "тяжести" выводимой страницы - там может быть, например, несколько строк практически неформатированного текста. Если взять исходный текст выводимой страницы, сохранить как html и положить страничку на тот же сервер - вывод будет моментальным и загрузка в браузере завершится сразу после вывода содержимого. Вообще, статические страницы практически любого размера и наполнения выводятся без проблем.
===

Нет там никаких информеров К примеру, код, который я приводил выше, выводит текст на новую чистую страницу.

Впрочем, пока я тут излагал свою проблему, появились идеи по постановке некоторых экспериментов. Если что-нибудь удастся выявить - расскажу.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Apache и другие веб-серверы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB