我整理了一个简单的脚本,从两个表中抽取产品名称,类别名称和产品ID。然后我拿这些数据,并用它来创建一个比我目前用于搜索引擎优化目标更好的页面标题。出于某种原因,我认为只要需要运行,就会花费很长时间。有7K款产品。有没有更好的方法来处理这个PHP脚本? - 超时问题
我的托管公司确实允许创建一个自定义php.ini,所以我能够覆盖30秒的时间限制并将其更改为6000.但脚本仍然超时。所以我认为我的剧本是我的烂片。 :)
以下是脚本。有没有更好的方法可以写出来,以便它不超时?或者,我正在尝试花费一些时间,我需要编写脚本一次完成一个类别?
<?php
// Make a MySQL Connection
mysql_connect("localhost", "myusername", "mypassword") or die(mysql_error());
mysql_select_db("mydatabase") or die(mysql_error());
$result = mysql_query("SELECT isc_products.prodcode, isc_products.prodname, isc_categories.catname FROM isc_products, isc_categories WHERE isc_products.prodcatids = isc_categories.categoryid")
or die(mysql_error());
while($row = mysql_fetch_array($result)){
$pname = mysql_real_escape_string($row['prodname']);
$catname = mysql_real_escape_string($row['catname']);
$sitename = Sitename;
$prodcode = $row['prodcode'];
$result2 = mysql_query("UPDATE isc_products SET prodpagetitle = '$pname - $catname - $sitename' WHERE prodcode = '$prodcode'")
or die(mysql_error());
}
?>
indexes http://www.threewestcreative.com/indexes.jpg
谢谢,您的帮助表示赞赏。 :)
非常感谢所有人!我非常感谢快速回复。我不能相信我忽略了一些简单的事情,比如对数据库运行直接查询(没有php)。 Geez ......再次感谢!
由于您正在选择如此多的行,请尝试使用类似Navicat的方式直接运行查询(而不是通过php)来检测数据库是否是瓶颈。 – F21 2012-01-18 02:28:20
首先你在数据库上使用索引?这完全不同。 – Frankie 2012-01-18 02:28:43
你不需要从mysql获得mysql_real_escape_string数据。另外我没有看到你的sitename常量?你也不需要这样做,你可以从选定的行更新MySQL数据,甚至不使用PHP http://www.electrictoolbox.com/article/mysql/cross-table-update/ – Steven 2012-01-18 02:30:48