За последние 24 часа нас посетили 17746 программистов и 1712 роботов. Сейчас ищут 982 программиста ...

Unzip после file_put_contents

Тема в разделе "PHP для новичков", создана пользователем boo, 10 авг 2011.

  1. boo

    boo Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    Хотел узнать, если делать так, не должно ли что-то задерживать запуск функции $zip->open, пока файл не записан полностью?
    PHP:
    1.  
    2. $a = file_get_contents('http://domain.ru/archive.zip');
    3.  
    4. file_put_contents('newZip.zip', $a);
    5.  
    6. $zip = new ZipArchive;
    7. $file = 'newZip.zip';
    8. $res = $zip->open($file);
    9. if ($res === TRUE) {
    10.     $zip->extractTo('tmp');
    11.     $zip->close();
    12. } else {
    13.     echo 'failed, code:' . $res;
    14. }
    15.  
    16.  
    но на практике все выходит хорошо, архив ~10Mb
    возможно нужно делать так? :
    PHP:
    1.  
    2. if(file_put_contents('newZip.zip', $a);){
    3. ...//unzip
    4. }
    5.  
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а че это ты делаешь в первых строках?

    и что значит задерживать?
     
  3. boo

    boo Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    с другого сайта скачиваю zip.
    потом сохраняю его себе на сервер. но сохранение занимает какой то время(зависит от размера файла)
    а потом Унзип.
    задерживать - т.е. нужно ж поидее запускать Унзип когда уже файл целиком лежить на моём сервере.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я так понимаю, асинхрона не будет.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    но на фалс проверить стоит
     
  6. boo

    boo Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    на фалс - то что я написал во 2ом блоке, в первом посте? или ещё что то ?
     
  7. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    по идее все нормально, т.к. следущая задачу у тебя запускается только после предыдущей, т.е. архивация только после полной закачки, это при условии что не будет обрывов связи и т.д.

    фалс я так думаю сверка хэшей.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    PHP:
    1.  $a = file_get_contents('http://domain.ru/archive.zip');
    2.  
    3.  if (file_put_contents('newZip.zip', $a) === false) {
    4.   echo "облом со скачиванием";
    5. } else {
    6.  $zip = new ZipArchive;
    7.  $file = 'newZip.zip';
    8.  $res = $zip->open($file);
    9.  if ($res === TRUE) {
    10.      $zip->extractTo('tmp');
    11.      $zip->close();
    12.  } else {
    13.      echo 'failed, code:' . $res;
    14.  }
    15. }
    наверное хорошо бы и размер сверить. ну это уже смотри сам всё. я думаю и так ошибок не будет никогда.
     
  9. boo

    boo Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    всё ясно, всем спасибо! размер сверять не буду, вдруг зип на чужом сайте обновится в это время...
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    boo
    за мгновение? =) ну...
     
  11. boo

    boo Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    почему за мгновение? а если размер ~100mb? пока кач, пока запись.
    кстати вот интересный вопрос, если во время скачки заменят файл? там в архиве несколько XML, как понимаю с большой основной базы, а она может меняется в любое время (если не по таймеру каждые 2-5мин создаётся).

    наверное всё ж ты прав, скачал - сохранил - сверил размеры. Если не совпадают, заново скачал - сохранил - сверил.
    ..
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    boo
    не, батенька. если файл может меняться во время скачки, то там надо считать не только размер, но и црц и всякое такое.

    я думаю что стоит скооперироваться с той стороной, откуда качать собираетесь, и озаботиться этим вопросом.

    имхо проще прикрутить какойнить интерфейс напрямую к бд, чем качать.