PHP,MySQL - 在循环中从服务器中获取文件

时间:2016-04-04 03:51:21

标签: php jquery mysql

抱歉 - 也许 - 错误的标题,但我不是英语母语人士,也不知道谁能更好地解释我的问题。

我需要从外部服务器下载图像,从表中为每个数据集下载一个图像。 我已经编写了一个代码 - 基于我已经找到的想法。

当我使用少量数据集测试它时,此代码正常工作。但是我想一次运行一次这个脚本,表格最多有10.000个数据集。

我需要一个解决方案,脚本将仅按步骤下载图像(每个最多5MB) - 可能是100,然后是100,...

或者jQuery / Ajax可能有更好的解决方案?我对jQuery没有太多经验,只有PHP的基础知识。

这是我的代码:

foreach ($rs_post as $row) {

  $org_file    = 'http://domain.tld/' . $sub_dir . '/' . substr($row['sender_id'], 4) . '/' . $row['sender_id'] . '/pic_' . $row[$file_id] . $prefix . '.jpg';
  $target_file = '/path/' . $dir . '/pic_' . $row[$file_id] . $prefix . '.jpg';

  if (file_exists($target_file)) {
    $ifmodhdr = 'If-Modified-Since: '.date( "r", filemtime($target_file))."\r\n";
  } else {
    $ifmodhdr = '';
  }
  $arrRequestHeaders = array( 'http'=>array( 'method' => 'GET', 'protocol_version' => 1.1, 'follow_location' => 1, 'header' => "User-Agent: Feed/1.0\r\n" . "Referer: $source\r\n" . $ifmodhdr ) );

  if (!file_exists($target_file)) {
    $success = copy( $org_file, $target_file, stream_context_create($arrRequestHeaders) );
    if($success) {
      echo '<li>'.$org_file.' : OK</li>';
    } else {
      echo '<li>'.$org_file.' : KO</li>';
    }
    ob_flush(); flush();
  }

}

当我使用所有数据集运行此脚本时,我遇到了超时或内存问题。当我使用一些数据集运行此脚本时,它可以正常工作。

对我来说有什么tipps或教程吗?

此致 托

0 个答案:

没有答案