Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Выполнение задачи по частям

Сообщения:  [1-10]   [11-12] 

 
 автор: valenok   (12.07.2006 в 09:29)   письмо автору
 
   для: cyberface   (11.07.2006 в 21:47)
 

=)

   
 
 автор: cyberface   (11.07.2006 в 21:47)   письмо автору
 
   для: Trianon   (11.07.2006 в 16:54)
 

=))) Я же говорю, что тему не читал =) просто у меня лежал учебник открытый именно на этой странице, ну я и написал все что видел :-j

   
 
 автор: Trianon   (11.07.2006 в 16:54)   письмо автору
 
   для: cyberface   (11.07.2006 в 15:26)
 

И при чем тут это всё?
Если Вы попробуете отпрофилировать код, то увидите, что 99,99% времени занимает выполнение file_get_contents, т.к. читаемый файл является http-потоком на другом сервере.
Это, конечно, весьма благое дело - оптимизоровать оставшиеся 0,01%, да только эффекта не будиет никакого.

   
 
 автор: cyberface   (11.07.2006 в 15:26)   письмо автору
 
   для: restall   (11.07.2006 в 09:39)
 

Извините, не читал всю тему, но у меня тут лежит открытый учебник Котерова и в нем написано следущее:

<?
$f 
fopen$fname "file.txt""rt" );
$lines explode("\n"fread($ffilesize($fname)));
?>

"Эти две строчки не только поместят в массив $lines все строки файла, но еще и:
- удалят лишние символы перевода строки (\n);
- удалят символы \r (на счет режима открытия файла "rt");
- сделают это даже быстрее, чем один вызов file().
Последний пункт наводит на размышление, но простая проверка показывает: да, пара fread() + explode() работает быстрее, чем вызов file(). Парадокс"
Попробуйте, может быть поможет...

   
 
 автор: Trianon   (11.07.2006 в 12:50)   письмо автору
 
   для: restall   (11.07.2006 в 12:34)
 


<? 
$start_from 
= isset($_GET['from']) ? intval($_GET['from'])) : '0';
$page = isset($_GET['page']) ? intval($_GET['page'])) : 0;
++
$page;
$maxtime=20;
$servers file('servers.txt');
$start_time time();
echo 
"Page $page<hr>";
for(
$i $start_from$i count($servers); $i++)
{
  if(
time() -$start_time $maxtime)
      exit(
"<script> window.location.href= '?from=$i&page=$page'; </script>")   ;
  
$server trim($servers[$i];
  
$result=file_get_contents($server); 
  if (
$result=="success")     echo 'Сервер '.$server.' успешно синхронизирован.<br />'
  else 
  { 
    echo 
'<font color=red>Ошибка синхронизации сервера '.$server.'. </font><br />''; 
    if (!$result) echo '
<font color=red>Невозможно запустить скрипт '.$server.'</font><br />''
    else            echo 
'<font color=red>Ошибка: '.$result.'</font><br />''; 
  } 
}
echo "<hr>End of job";
?>

Хуже - тем, что после вывода на страницу операции с заголовками использовать поздно. Рефреш придется выполнить JSом.

   
 
 автор: valenok   (11.07.2006 в 12:39)   письмо автору
 
   для: restall   (11.07.2006 в 12:20)
 


<? 
<? 
$servers=file('servers.txt') OR die('Не могу открыть список серверов.'); 
echo 
'Список серверов загружен<br />'
if(
$_GET['server_num']){$i=$_GET['server_num'];}else{$i=0;} 
$time=time()+30

for (
$i;$i<count($servers);$i++) { 
if(
time()>$time){ echo "<SCRIPT>document.location='".$_SERVER['PHP_SELF']."?server_num=".($i-1)."';</SCRIPT>"; die();} 
     
$servers[$i]=trim($servers[$i]); 
     
$result=file_get_contents($servers[$i]); 
        if (
$result=="success") { 
            echo 
'Сервер '.$servers[$i].' успешно синхронизирован.<br />'
         } else { 
            echo 
'<font color=red>Ошибка синхронизации сервера '.$servers[$i].'. </font><br />'
                if (!
$result) { 
                 echo 
'<font color=red>Невозможно запустить скрипт '.$servers[$i].'</font><br />'
               } else { 
                 echo 
'<font color=red>Ошибка: '.$result.'</font><br />'
               } 
         } 
}  

   
 
 автор: restall   (11.07.2006 в 12:34)   письмо автору
 
   для: Trianon   (11.07.2006 в 12:31)
 

А поподробнее с кодом именно запоминания строк и дальнешенго использывания... И что вы предлагаете на JS написать?? Чем обычный рефреш хуже? Тем болие я эти языком невалдею...

   
 
 автор: Trianon   (11.07.2006 в 12:31)   письмо автору
 
   для: restall   (11.07.2006 в 12:20)
 

Вам нужно использовать функцию time() в цикле опроса серверов.
Когда затраченное время превысит некоторый лимит, нужно прервать цикл, запомнить номер строки и сгенерировать код на JS , который бы перезагрузил страницу, указав следующий номер в параметре обращения к странице.

   
 
 автор: restall   (11.07.2006 в 12:20)   письмо автору
 
   для: valenok   (11.07.2006 в 10:28)
 


$r="$server";

В этой переменной был типа чеерз слеш написано адрес старниц к примеру $r="$server/faylik.php?pass=89048248034klkf"; понимаете... потому я его просто вынял, забыл убрать переменную...
Насчет код оптимизирвоать, он и так оптимизирвоан до минимума. Насчет что мне даст типа если будет брать по 10 сточек. Обьясняю, когда выполняется ввесь скрипт, олн выполняется довольно долго ну 2 где-то минуты (в браузере) это довольно долго... и у меян инет не выдерживает, да и лимит маленький... тоесть апачка посто сбраысвает процес, н евыполнив его.. .а мне это не нужно, потому я хочу розбить эть то все дело на маленькие части... упсть к примеру 10 загрузилось... потом обновление.. потом снова 10... и так пока не выполниться.. будет выполнятся 3-4 минуты - будет ок... посто сейчас и этог онету... Я счейчас добавляю через шелл.. .я просто написал выполнение через шелл ппшного файла... Процес не тухен, но очень длинный... Шелл славиться своею медленною выполнимостю...(зато без ошибок).
Если вы можете можете помочь - помогите.
Насчет темы, буду знать))
Жду ответа.

   
 
 автор: valenok   (11.07.2006 в 10:28)   письмо автору
 
   для: restall   (11.07.2006 в 09:39)
 

И заодно - в дальнейшем не пиши неинформативные названия тем

   

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования