2011-03-20 11 views
0

mysqlデータベースの更新に問題があります。 は、私は〜80万行のデータベース上でこのスクリプトを実行したいが、私の記憶では5行の後に実行されますので、私は自動的にLIMITに+5を追加することによって、このMySQLのクエリを更新する必要がどのようにいくつか。メモリの問題mysql

私は

<?php 

    include(dirname(__FILE__) .'/include/simple_html_dom.php'); 

    mysql_connect('localhost', '', ''); 
    mysql_select_db(''); 

    $result = mysql_query("SELECT gamertag FROM gamertags LIMIT 0, 5 "); 
     while ($row = mysql_fetch_assoc($result)) { 
      $gamertag = $row['gamertag']; 

      //pages to pull stats from 
      $site_url = 'http://www.bungie.net'; 
      $stats_page = 'http://www.bungie.net/stats/reach/default.aspx?player='; 

      //create dom 
      $html = new simple_html_dom(); 
      $html->load_file($stats_page . urlencode(strtolower($gamertag))); 

      //pull nameplate emblem url, ****if it exist**** 
      $nameplate_emblem_el = $html->find("#ctl00_mainContent_identityBar_namePlateImg"); 
      if (!$nameplate_emblem_el){ 
       $nameplate_emblem = 'No nameplate emblem!'; 
      } 
      else{ 
       //only if #ctl00_mainContent_identityBar_namePlateImg is found 
       $nameplate_emblem = htmlspecialchars_decode($nameplate_emblem_el[0]->attr['src']); 
       $nameplate_emblem = $site_url . $nameplate_emblem; 
      } 

      mysql_query("INSERT IGNORE INTO star SET gamertag = '".$gamertag."',nameplate = '".$nameplate_emblem."'"); 
     } 

?> 
+0

のようなものである「のmemory_limit = X」を探してくださいすべて800,000行?単なる好奇心から。どういうわけかそれらをすべて更新する必要があるのであれば、それはクエリを介して行うことはできませんか? –

+0

あなたは、私たちはたぶん、あなたは私達にあなたのスクリプトの残りの部分を表示したり、本の何目的たちを説明できるメモリ – Unicron

+0

を使用していますかを見ることができますので、より多くのコードを表示する必要があります。ゲーマータグが必要な場合は、mysql_fetch_row()を優先します。 - – guillaumepotier

答えて

0

800.000 ..リダイレクトを使用するか、何とか記憶をリセットするには、it'sつもり起こるかどうかわから多数ではなく、PHPマニュアルのコメントから: 「の設定を解除()それは名前だだけで何行うことは言う - 未設定の変数をそれはそれはフィットを見たときにPHPのガベージコレクタがそれを行いますすぐにメモリ解放を強制しません - 。遅くとも意向により、すぐに、これらのCPUサイクルがとにかく必要とされていないとして、または。 。あなたは、VAを書き換えている、スクリプトが最初に発生したものは何でも、メモリ不足になり前

をあなたはどんな= nullの$を行っている場合などライバルのデータ。メモリを解放/縮小するのが速くなるかもしれませんが、真に必要とするコードからCPUサイクルを奪ってしまい、全体的な実行時間が長くなります。 "

ソース:http://php.net/manual/enだから、/function.unset.php

、ループの実行毎時間の後に変数をnullに設定/解除してみてください。

0

を私はマシンあなたは、PHPのメモリ制限を打つことを推測し、いないよ。場合そう、あなたは、PHPに多くのメモリを与えるためにphp.iniの(通常は/etc/php5/apache2/php.ini)を編集することができます。あなたが選択する必要があるのはなぜXは256M