1. PHP / Говнокод #3168

    +162

    1. 1
    $file=@implode("",file("http://www.google.com/search?&;q=site:$url&hl=en"));

    Крутой аналог file_get_contents.

    Запостил: mr.The, 06 Мая 2010

    Комментарии (12) RSS

    • Вовсе это не аналог. оно переводы строк вырежет
      Ответить
      • Да, но в любом случае говнокод.
        Ответить
      • Не вырежет
        Ответить
      • Не вырезает однозначно. Чтобы убирать в конце перевод строки тримить приходится.
        Ответить
        • Ох. Поставьте параметр FILE_IGNORE_NEW_LINES. Не надо ничего триммить.
          Ответить
    • // Второй пример. Получим содержание web-страницы в виде одной строки.
      // См.также описание функции file_get_contents().
      $html = implode('', file ('http://www.example.com/'));

      Выглядит, как боянчик пятилетней давности.
      Ответить
    • Видимо автор сия поста хочет миру показать пример меньше, проще и оптимизированнее?
      Тогда в студию...

      ЛикБез: никто не работал с файлами больших размеров?
      Так вот если работал, то он бы знал, что file_get_contents жрёт времени немного больше, чем file (со всеми вытекающими), и, в случае если этот код проходит значительное число итераций, то на скорости работы такое решение очень скажется...
      Ответить
      • http://ipicture.ru/upload/100506/4YEaBTtCv3.png (0.21кб)
        http://ipicture.ru/upload/100506/vVUYaN6aNg.png (555кб)
        Ответить
        • Не, неправильно поняли :)
          В итерации (от 1000 шт) только одного и только другого, и не на локальном компе, а на живом сервере, чтоб Ваш коннект с инетом не влиял.

          Мой вариант, но с файлом, так вернее будет...
          <?php
          for($step = 0; $step < 10; $step++) {
              $start = microtime(true);
              $length = filesize("D:/123.zip");
              for($index =0; $index < 1000; $index++) {
                  $fh = fopen("D:/123.zip", "r");
                  $data = fread($fh, $length);
                  fclose($fh);
              }
              $end = microtime(true);
              $file_time = $end - $start;
              echo "file time = {$file_time}<br />";
              
              $start = microtime(true);
              for($index =0; $index < 1000; $index++) {
                  $data = file_get_contents("D:/123.zip");
              }
              $end = microtime(true);
              $file_get_time = $end - $start;
              echo "file_get_contents time = {$file_get_time}<br />";
          
              echo ($file_time < $file_get_time ? "file" : "file_get_contents")." won!";
              echo "<br /><br />";
          }
          ?>


          результат можно посмотреть здесь - http://ipicture.ru/upload/100507/ud3nz1OHi3.gif

          Из 10 проходов, file в скорости превосходил file_get_contents в 6 случаях.

          Но хотелось бы заметить, что на PHP5 file_get_contents работает значительно быстрее, чем на PHP4.

          PS: в любом случае, отдельно спасибо mindfreakthemon, за то, что всё тут за чистую монету не воспринимает! Побольше таких бы пользователей и поменьше с ником guest!
          Ответить
          • Такая разница обусловленна качеством связи, а не скоростью работы методов.
            Ответить
            • Тов. leprosus уточнил что тестил методы на живом сервере цитирую "чтоб Ваш коннект с инетом не влиял."
              Ответить

    Добавить комментарий