<?php $file = "books.xml"; $data = ""; if (!($f = fopen($file, "r"))) { die("could not open XML input"); } if (!($ff = fopen("final.txt", "w"))) { die("could not open result file"); } function parse(){ global $data, $ff; $pos = strpos($data, chr(13)) + 1; $str = substr($data, 0, $pos); $data = substr($data, $pos); if($pos != 0){ fputs($ff, $str); parse(); } } while ($get = fread($f, 4096)) { $data .= $get; parse(); //после ее вызова управление не возвращается } fclose($f); fclose($ff); echo "OK"; ?>
Спустя 1 час, 53 минуты, 26 секунд (15.12.2006 - 19:46) vasa_c написал(а):
На основании каких тестов было сделано заключение о том, что не возвращается? И куда в таком случае возвращается?
И что вообще делает данный сценарий? И известна ли вам такая возможность, как передача в функцию аргументов?
Опять-таки желательно выложить сюда пример исходного xml-файла, чтобы те, кто захочет помочь могли бы воспроизвести ситуацию у себя.
И что вообще делает данный сценарий? И известна ли вам такая возможность, как передача в функцию аргументов?
Опять-таки желательно выложить сюда пример исходного xml-файла, чтобы те, кто захочет помочь могли бы воспроизвести ситуацию у себя.
Спустя 1 час, 1 минута, 21 секунда (15.12.2006 - 20:48) eMASTER написал(а):
Функция не возвращает управление, после своей работы.
Этот кусок кода просто построчно читает данные из XML файла и записывает их в файл, но суть в том, что после прочтения первого блока(4096 байт) и записи его в файл(рекурсией, построчно), управление не возвращется в цикл для прочтения следующего блока данных из файла.
Можно передавать через аргументы, но суть в том, что разницы нет
XML приводить нет смысла, т.к. данный код его не парсит, а просто сохраняет в файл
Этот кусок кода просто построчно читает данные из XML файла и записывает их в файл, но суть в том, что после прочтения первого блока(4096 байт) и записи его в файл(рекурсией, построчно), управление не возвращется в цикл для прочтения следующего блока данных из файла.
Можно передавать через аргументы, но суть в том, что разницы нет
XML приводить нет смысла, т.к. данный код его не парсит, а просто сохраняет в файл
Спустя 27 минут, 24 секунды (15.12.2006 - 21:15) vasa_c написал(а):
Спустя 2 дня, 14 часов, 7 минут, 31 секунда (18.12.2006 - 11:23) eMASTER написал(а):
<!--QuoteBegin-vasa_c+--><div class='quotetop'>QUOTE(vasa_c)</div><div class='quotemain'><!--QuoteEBegin--><b>eMASTER</b>, так куда же девается это управление? Как я понимаю уходит в вечный цикл. Единственная возможная причина pos всегда != 0. <br>
А нулю он может стать равен, только когда strpos вернет -1.
$pos = strpos($data, chr(13)) + 1;
А нулю он может стать равен, только когда strpos вернет -1.
точно, ты прав, что-то я пока отлаживал ступил блин...
хоть тупая ошибка, все равно спасибо :)