循环期间PHP脚本停顿

时间:2015-03-13 15:55:08

标签: php loops

下面的脚本似乎在循环期间没有任何理由停止。循环有6700个结果,但它处理了375-460个结果。没有给出或记录错误。

    <?php

/* Example usage of the Amazon Product Advertising API */
include("amazon_api_class.php");


ignore_user_abort(true);
set_time_limit(0);
ini_set('memory_limit','256M');
ini_set("display_errors", 1);
ini_set("track_errors", 1);
ini_set("html_errors", 1);
error_reporting(E_ALL);



// define variables
$username = "xxxxxxx";
$password = "xxxxxxx";
$hostname = "localhost"; 

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password) 
    or die("Unable to connect to MySQL");
    //echo "Connected to MySQL<br>";

//select a database to work with
mysql_select_db("xxxxxxxx",$dbhandle) 
    or die("Could not select database");

//execute the SQL query and return records
$result = mysql_query("SELECT * FROM input ORDER BY mpn");
if (!$result) { // add this check.
die('Invalid query: ' . mysql_error());
}
//clear results table before processing
mysql_query("TRUNCATE TABLE results");

mysql_close($dbhandle);


//loop
while($row = mysql_fetch_array($result)) {

$mfg = $row['mfg'];
$mpn = $row['mpn'];

$keyword = $mfg." ".$mpn;


    $obj = new AmazonProductAPI();

try{


    $data = $obj->getItemByKeyword($keyword);




$asin = $data->Items->Item->ASIN;
$weight = $data->Items->Item->ItemAttributes->PackageDimensions->Weight;
$height = $data->Items->Item->ItemAttributes->PackageDimensions->Height;
$length = $data->Items->Item->ItemAttributes->PackageDimensions->Length;
$width = $data->Items->Item->ItemAttributes->PackageDimensions->Width;
$manufacturer = $data->Items->Item->ItemAttributes->Manufacturer;
$brand = $data->Items->Item->ItemAttributes->Brand;
$partnumber = $data->Items->Item->ItemAttributes->MPN;
$title = $data->Items->Item->ItemAttributes->Title;
$upc = $data->Items->Item->ItemAttributes->UPC;
$ean = $data->Items->Item->ItemAttributes->EAN;
$pricenew = $data->Items->Item->OfferSummary->LowestNewPrice->FormattedPrice;
$priceused = $data->Items->Item->OfferSummary->LowestUsedPrice->FormattedPrice;
$description = $data->Items->Item->ItemAttributes->Feature;
$title = $data->Items->Item->ItemAttributes->Title;

    echo '  processing  '.$counter++;



//connection to the database
$dbhandle1 = mysql_connect($hostname, $username, $password) 
    or die("Unable to connect to MySQL");


//select a database to work with
mysql_select_db("xxxxxxxx",$dbhandle1)
    or die("Could not select db");


//execute the SQL query and return records
mysql_query('INSERT INTO `results`(`mpn`, `mfg`, `brand`, `asin`, `ean`, `upc`, `description`, `low_price_new`, `low_price_used`, `length`, `width`, `height`, `net_weight`, `gross_weight`, `shipped_weight`, `title`) VALUES ("'.$partnumber.'","'.$manufacturer.'","'.$brand.'","'.$asin.'","'.$ean.'","'.$upc.'","'.$description.'","'.$pricenew.'","'.$priceused.'","'.$length.'","'.$width.'","'.$height.'","'.$weight.'","'.$weight.'","'.$weight.'","'.$title.'")');
mysql_error();


 mysql_close($dbhandle1);

 //unset variables
 unset($asin);
 unset($weight);
 unset($height);
 unset($length);
 unset($width);
 unset($manufacturer);
 unset($brand);
 unset($partnumber);
 unset($packagequantity);
 unset($title);
 unset($upc);
 unset($data);
 unset($keyword);

 //flush
 flush();


 //force garbage collection
 gc_enable();
 gc_collect_cycles();






usleep(50000);
}
 catch(Exception $e)

{
//echo $e->getMessage();  
}
    //print_r($result);
}
echo "<br><h3>Job Completed</h3><br><br><h1><a href='csv_amz.php'>Download  Results As CSV File</a></h1><br><br><h1><a href='index.php'>Upload New File</a></h1>";
?>

我主要关注的是让这个脚本贯穿整个列表。当用50-100测试结果时,工作没有任何问题。 作为次要问题,在循环内我有一个带计数器的回声。我想让它实时显示在屏幕上,而不是在脚本完成时立即显示。

0 个答案:

没有答案