Хотел узнать, если делать так, не должно ли что-то задерживать запуск функции $zip->open, пока файл не записан полностью? PHP: $a = file_get_contents('http://domain.ru/archive.zip'); file_put_contents('newZip.zip', $a); $zip = new ZipArchive; $file = 'newZip.zip'; $res = $zip->open($file); if ($res === TRUE) { $zip->extractTo('tmp'); $zip->close(); } else { echo 'failed, code:' . $res; } но на практике все выходит хорошо, архив ~10Mb возможно нужно делать так? : PHP: if(file_put_contents('newZip.zip', $a);){ ...//unzip }
с другого сайта скачиваю zip. потом сохраняю его себе на сервер. но сохранение занимает какой то время(зависит от размера файла) а потом Унзип. задерживать - т.е. нужно ж поидее запускать Унзип когда уже файл целиком лежить на моём сервере.
по идее все нормально, т.к. следущая задачу у тебя запускается только после предыдущей, т.е. архивация только после полной закачки, это при условии что не будет обрывов связи и т.д. фалс я так думаю сверка хэшей.
PHP: $a = file_get_contents('http://domain.ru/archive.zip'); if (file_put_contents('newZip.zip', $a) === false) { echo "облом со скачиванием"; } else { $zip = new ZipArchive; $file = 'newZip.zip'; $res = $zip->open($file); if ($res === TRUE) { $zip->extractTo('tmp'); $zip->close(); } else { echo 'failed, code:' . $res; } } наверное хорошо бы и размер сверить. ну это уже смотри сам всё. я думаю и так ошибок не будет никогда.
почему за мгновение? а если размер ~100mb? пока кач, пока запись. кстати вот интересный вопрос, если во время скачки заменят файл? там в архиве несколько XML, как понимаю с большой основной базы, а она может меняется в любое время (если не по таймеру каждые 2-5мин создаётся). наверное всё ж ты прав, скачал - сохранил - сверил размеры. Если не совпадают, заново скачал - сохранил - сверил. ..
boo не, батенька. если файл может меняться во время скачки, то там надо считать не только размер, но и црц и всякое такое. я думаю что стоит скооперироваться с той стороной, откуда качать собираетесь, и озаботиться этим вопросом. имхо проще прикрутить какойнить интерфейс напрямую к бд, чем качать.