我正在运行一个PHP脚本,它可以在线调用世界天气,以纬度经度检索波高,波浪持续时间和水温。但是我的主机只允许10秒的脚本执行。我想知道我是否可以麻烦社区给我一些优化我的脚本的想法/指示,因为我无法访问我的主机上的php_ini。该脚本有效,仅更新约35条记录。共有100条记录。我认为我在世界天气API上投入大量数据。
这是我的剧本:
$connection=mysql_connect('myhost', 'user', 'post');
if (!$connection) { die('Not connected : ' . mysql_error());}
$db_selected = mysql_select_db('ilovebigbutts', $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
// Here I am selecting the lat long and pri_id from table
$query = "SELECT * FROM beaches";
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}
while ($row = @mysql_fetch_assoc($result)) {
$id = $row["pri_id"];
$lat = $row["lat"];
$lng = $row["lng"];
$feed_url = "http://free.worldweatheronline.com/feed/marine.ashx? key=xxxxxxxxxxxx&q=".$lat.",".$lng."&format=xml";
$xmlString = file_get_contents($feed_url);
$xml = new SimpleXMLElement($xmlString);
$items = $xml->xpath('weather/hourly');
$closeItems = array();
$new_array = array();
foreach($items as &$item)
{
$waves = $item->swellHeight_m;
$wave_secs = $item->swellPeriod_secs;
$water_temp = $item->waterTemp_F;
$query1 = "UPDATE beaches SET waves = '$waves', wave_secs = '$wave_secs', water_temp = '$water_temp' WHERE pri_id = '$id' LIMIT 1";
$update_result = mysql_query($query1);
if (!$update_result) {
die("Invalid query: " . mysql_error());
}
}
}
答案 0 :(得分:0)
在优化之前,您是否检查了
<?php
set_time_limit(60); // 1min execution
有效吗?
答案 1 :(得分:0)
我很惊讶这是&gt; 10秒你有关于pri_id的索引吗?如果这样做,您可以始终对原始选择查询设置限制并以块的形式执行。