2013-11-19 3 views
0

Я настраиваю скрипт на своем сервере, который использует некоторые переменные GET, посланные пользователем, чтобы решить, какие файлы включать в zip, который затем возвращается пользователю. ZIP-файл создается динамически по сценарию и всегда будет иметь имя myZip.zip.PHP Script для загрузки файлов в zip

Если у меня потенциально есть 100 пользователей, вызывающих сценарий одновременно, и каждый пользователь может иметь разные файлы, включенные в zip, будет ли это работать?

Спасибо!

пример сценария:

<?php 

    $fileA = 'fileA.xml'; 
    $fileB = 'fileB.xml'; 
    $fileC = 'fileC.xml'; 

    $filesToSend = array(); 

    if(conditionA) { 

     array_push($filesToSend, $fileA); 
    } 

    if(conditionB) { 

     array_push($filesToSend, $fileB); 
    } 

    if(conditionC) { 

     array_push($filesToSend, $fileC); 
    } 

    if(count($filesToSend) > 0) { 

     $zipname = "myZip.zip"; 
     $zip = new ZipArchive(); 
     $res = $zip->open($zipname, ZipArchive::CREATE); 

     if ($res === TRUE) { 

      foreach ($filesToSend as $file) { 

       $zip->addFile($file); 
      } 
     } 
     else { 

      echo 'failed, code:' . $res; 
     } 

     $zip->close(); 

     header("Cache-Control: no-store, no-cache, must-revalidate"); 
     header("Cache-Control: post-check=0, pre-check=0", false); 
     header("Pragma: no-cache"); 
     header("Content-type: application/zip"); 
     header('Content-length: '.filesize($zipname)); 
     header('Content-disposition: attachment; filename=' . basename($zipname)); 
     ob_clean(); 
     flush(); 
     readfile($zipname); 
     @unlink($file); 
    } 
    else { 
     echo "nothing new"; 
     echo $modifiedDate; 
    } 
?> 
+1

Вы должны создать уникальный имя файла на сервере для каждого пользователя, затем подайте его с помощью «myZip.zip» для каждого –

+3

Нет. вы создаете ZIP-файл на диске, поэтому ВСЕ ваши пользователи будут топать друг на друга. Используйте 'uniqid()' для генерации уникального имени файла для каждого запроса и использования этого идентификатора для имени файла на диске. Вы все равно можете обслуживать «myZip.zip» в заголовках загрузки, например. 'Content-disposition: attachment; filename = myZip.zip' –

ответ

-1

Эти ссылки могут помочь вам:

  1. Using headers

  2. Creating zip file in PHP

+0

Ссылка только ответы и неприемлемы. Вторая ссылка даже не имеет ответа или принята сообществом. –

Смежные вопросы