2014-09-20 110 views
0

現在面臨一個奇怪的問題在我的PHP代碼...讓我描述我的PHP代碼從ExcelPHP回聲不打印

  1. 讀取單元格值的目的,並把它上傳在一個MySQL表
  2. 閱讀從MySQL表的每個值和來自外部源的
  3. 商店獲取數據在表從外部源獲取的
  4. 回聲過程完成
  5. 回聲鏈接到顯示結果
  6. 數據

的代碼是完全工作正常,但在Excel的行大小大那麼點1,2,3是工作,但4,5不顯示

沒有錯誤沒有警告......

我只是無能,爲什麼這個問題發生

附上下面的代碼片段:

<?php 

error_reporting (E_ALL^E_NOTICE); 

error_reporting (E_ALL^E_DEPRECATED); 

error_reporting(0); 

session_start(); 

require_once("index11.php"); 

require_once("simple_html_dom.php"); 

include('ganon.php'); 

ini_set('max_execution_time', 1200); 






$val2 = $_SESSION['$val2']; 




if($_SESSION['$val8'] == "mu") 
{ 

if($_SESSION['$val2'] == "fr") 

{ 

//echo "MU for FR"; 


$conn = mysql_connect("localhost", "root", "****"); 


if (!$conn) { 
    echo "Unable to connect to DB: " . mysql_error(); 
    exit; 
} 

if (!mysql_select_db("DB")) { 
    echo "Unable to select mydbname: " . mysql_error(); 
    exit; 
} 


$sql = "SELECT DISTINCT EANcode from test WHERE timestamp = DATE(NOW()) and EAncode <> ''"; 



$result = mysql_query($sql); 
$a = 0; 

while ($row = mysql_fetch_assoc($result)) { 

foreach ($row as $b) 

{ 
$ean = $b; 

$url = "WWW.URL.COM" .$ean; 

$html = file_get_html($url); 


$link=$html->find('a[class=webtrekk]'); 

$link1 = $link[4] -> href; 


$link2 = "WWW.URL.COM" .$link1; 

$html = file_get_dom($link2); 


$i = 0; 

foreach($html('tr') as $rowdata) { 
     $name = ''; 
     $test1 = ''; 

     foreach($rowdata('a[class="test1"]') as $d) { 
      $name = $d('img', 0)->alt; 

$name2 = mysql_real_escape_string($name); 
$arr = explode("-", $name2, 2); 
$name1 = $arr[0]; 


     }  

foreach($rowdata('td[class="test1"]') as $d) { 
      foreach($d('span[class="test1"]') as $d2) { 
       $test1 = $d2->getPlainText(); 
      } 
     }  

if(!$test1 == "") 
{ 
$i = $i + 1; 

$now = new DateTime(); 

$dt = $now->format('Y-m-d H:i:s'); 

mysql_select_db("DB", $conn); 

$sql = "INSERT INTO `DB`.`tab_fr` (`pos`, `ean`, `prod_url`, `prod_compttr`, `prod_test1`, `timestamp`) VALUES ('$i', '$ean','$link2','$name1','$test1', '$dt')"; 

mysql_query($sql) or die('Error, insert query failed' . mysql_error()); 




} 
    } 


}  

} 
flush(); 
usleep(300000); 
$msg = "Query op Test.fr succesvol afgerond"; 
echo $msg ."<br/>" ; 

} 


if($_SESSION['$val2'] == "fr") 
{ 
$v2 = "Test.fr,"; 
} 
else 
{ 
$v2 = ""; 
} 


if($_SESSION['$val2'] == "fr") 
{ 

echo "<a href=10d2.php>cLICK HERE ".$v2."</a>" ."<br/>"; 

} 
} 

?> 

這是因爲超時問題encoun的發生在代碼中出現任何人都可以幫助我如何在超時後繼續編碼。

+0

請粘貼您的代碼,以便我們可以看到它的完成情況,並可能幫助您在正確的路徑上 – 2014-09-20 08:44:02

+0

點3的結束不起作用。否則,點4的回聲將在那裏。 – 2014-09-20 08:53:01

+0

@FranzHolzinger此代碼適用於測試表的較小行,但是當我上傳巨大的行時,此回顯消息不起作用 – user3305327 2014-09-20 09:08:21

回答

0

當正在處理大量數據時,它可能會導致相當於無限循環的情況。您看到數據插入在數據庫中成功,但尚未完成。所以你必須找到一個技巧來避免這種無限循環執行。

提示:將整個循環分解爲3或2個。

+0

如何打破循環,如果有任何無限循環 – user3305327 2014-09-20 09:11:42

+0

讓我們考慮你的循環是這樣的:for(i = 0; i <$ (i = 0; i <$ raw/2; $ i ++)---(1) (i = $ raw/2;原始; $ i ++)現在您可以將此循環拆分爲兩個: $ i <$ raw; $ i ++)---(2)。在這兩個for循環之間設置一些延遲。得到它了? – 2014-09-21 07:11:51