|
|
|
| Скрипт, код которого приведен ниже, производит просмотр содержимого сайта.
На Денвере он работает безупречно, просматривая все фаайлы секунд за пятнадцать. А вот на сервере ведет себя несколько странно.
Некоторое время после его запуска экран остается пустым - нет даже сообщения о старте. Потом появляется довольно большой массив найденных файлов, причем он обрывается на середине последнего показываемого файла. Похоже, что это броузер решил вывести накопленную информацию, а сам скрипт, вероятно, продолжает работать.
Затем выводится еще несколько порций информации,а потом скрипт словно исчезает: ни сообщения об истечении времени работы, ни сообщения о финише, ни даже дописывания последнего обрванного сообщения - вообще ничего...
Что бы это значило?
echo "START";
set_time_limit(3000);
$root = $_SERVER['DOCUMENT_ROOT'];
function find_new($dir)
{
$new_dir = null;
$dir_files = opendir($dir);
while(false !== ($file = readdir($dir_files)))
{
if($file != '.' && $file != '..')
$new_dir[] = $dir."/".$file;
}
if($new_dir)
foreach($new_dir as $check )
{
if(is_file($check))
echo $check."<br>";
elseif(is_dir($check))
find_new($check);
}
}
find_new($root);
echo "<br> FINIH";
|
| |
|
|
|
|
|
|
|
для: Владимир55
(08.01.2009 в 20:36)
| | в исх.тексте HTML тоже обрыв?
Он у Вас , правда, без переносов... | |
|
|
|
|
|
|
|
для: Trianon
(08.01.2009 в 20:43)
| | Сверху
<html>
<head>
<title></title>
</head>
<body>
<?php
| Снизу
Нельзя так? | |
|
|
|
|
|
|
|
для: Владимир55
(08.01.2009 в 20:52)
| | Ему банально не хватает 30 сек. Попробуйте вначале скрипта поставить
| |
|
|
|
|
|
|
|
для: Николай2357
(08.01.2009 в 20:54)
| | Там стоит почти час... | |
|
|
|
|
|
|
|
для: Владимир55
(08.01.2009 в 20:58)
| | Действительно... Просто у меня подобное было из за времени. Может не стоит абсолютный путь ему прописывать, мало ли... | |
|
|
|
|
|
|
|
для: Николай2357
(08.01.2009 в 21:02)
| | Тут что-то другое.
Когда не было увеличения времени, то выводилось соответствующее сообщение, указывающее на эту проблему.
И с путями нормально - ведь файлы он находит и выводит...
Мне кажется, что это броузер всему причиной - не отдает последнюю порцию информации. | |
|
|
|
|
|
|
|
для: Владимир55
(08.01.2009 в 21:06)
| | Браузер только принимает, он ничего не отдаёт. Ну так попробуйте с другого. | |
|
|
|
|
|
|
|
для: Владимир55
(08.01.2009 в 21:06)
| | А обрывается на одном и том же месте? Может там имя файла хитрое попадается? Попробуйте
<?
echo htmlspecialchars($check)."<br>\r\n";
|
| |
|
|
|
|
|
|
|
для: Владимир55
(08.01.2009 в 20:58)
| | у меня работает этот скрипт , добавил счётчик колличества файлов, считает правильно
<pre><?
set_time_limit(3000);
echo "START\n";
flush();
$i = 0;
$root = $_SERVER['DOCUMENT_ROOT'];
function find_new($dir) {
global $i;
$new_dir = null;
$dir_files = opendir($dir);
while(false !== ($file = readdir($dir_files))) {
if($file != '.' && $file != '..')
$new_dir[] = $dir."/".$file;
}
if($new_dir)
foreach($new_dir as $check ) {
if(is_file($check)) {
echo $check."\n";
$i++;
}
elseif(is_dir($check)) find_new($check);
}
flush();
}
find_new($root);
echo "$i\n FINISH";
?>
| попробуйте так , с flush()
и set_time_limit() не всегда может помогать | |
|
|
|
|
|
|
|
для: Владимир55
(08.01.2009 в 20:52)
| | в html-тексте а не в php
правая кнопка мыши. исх. код HTML-страницы | |
|
|
|
|
 677 байт |
|
|
для: Trianon
(08.01.2009 в 21:09)
| | Файл в Приложении. | |
|
|
|
|
 440 байт |
|
|
для: Владимир55
(08.01.2009 в 21:23)
| | В архиве | |
|
|
|
|
|
|
|
для: Владимир55
(08.01.2009 в 21:23)
| | Да Вы прям по экрану щёлкните правой кнопкой мышки и найдите что то вроде "исходный код". Там всё на месте или тоже обрезано? Файл то тут причём? | |
|
|
|
|
|
|
|
для: Николай2357
(08.01.2009 в 21:28)
| | Теперь я понял, о чем речь.
А то предположил, что я где-то код изложил не полностью.
Вставил flush(); и исполнение завершилось!!!
Спасибо! | |
|
|
|
|
|
|
|
для: Владимир55
(08.01.2009 в 21:23)
| | я понимаю, что при генерации скриптом, он ни разу не исходный, а сгенерированный.
Просто так называется элемент контекстного меню любого браузера.
Собственно для браузера это и вправду исходный код. | |
|
|
|
|
|
|
|
для: Trianon
(08.01.2009 в 21:37)
| | Рано я обрадовался - flush() вроде бы исправил ситуацию, но не надолго. Хотя состав сайта остался неизменным, скрипт опять стал "исчезать".
При этом в броузере виден только вот этот код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY></BODY></HTML>
|
| |
|
|
|
|
|
|
|
для: Владимир55
(11.01.2009 в 20:16)
| | Попробуйте без echo в функции, вот таким макаром:
<?
set_time_limit(3000);
echo "START\n";
flush();
$i = 0;
$root = $_SERVER['DOCUMENT_ROOT'];
$echo =null;
function find_new($dir) {
global $i, $echo;
$new_dir = null;
$dir_files = opendir($dir);
while(false !== ($file = readdir($dir_files))) {
if($file != '.' && $file != '..')
$new_dir[] = $dir."/".$file;
}
if($new_dir)
foreach($new_dir as $check ) {
if(is_file($check)) {
$echo .= $check."<br>\r\n";
$i++;
}
elseif(is_dir($check)) find_new($check);
}
flush();
}
find_new($root);
echo $i."<br>\r\n".$echo." FINISH";
?>
| А вообше я его специально погонял, так как это моя писанина. Спокойно пересчитывает каталог из более 20 000 файлов, ни одного сбоя. Наверное на хостинге у Вас не всё в порядке. | |
|
|
|
|
|
|
|
для: Николай2357
(11.01.2009 в 20:35)
| | У меня 83 тысячи файлов. На Денвере работает безупречно и очень быстро. На сервере иногда все проходит, а иногда не проходит - как-то непредсказуемо...
Даже на том сервере, где всего 3 тысячи файлов!
"Наверное на хостинге у Вас не всё в порядке."
Такое тоже возможно.
У меня ВДС и я давно бы поправил, если бы знал, что именно надо поправлять. | |
|
|
|