<?php
require_once( dirname(__FILE__) . '/shared.php');
function tabelle_holen_hosters( $condition = "" ) {
global $wpdb;
$sql = "SELECT * FROM whatever" . $condition;
if( $table = $wpdb->get_results( $sql, ARRAY_A ) ) {
return $table;
} else {
echo "SQL ERROR in tabelle_holen()";
var_dump( $table );
return false;
}
}
$test = tabelle_holen_hosters( " WHERE working=1 AND alexacheck=0 LIMIT 200" );
?>
<table>
<tbody>
<?php
foreach ( $test as $row ){
$rank = (int) alexaRank( $row['hoster'] );
if ($rank == 0)
$rank = 999999999;
echo '<tr>';
echo '<td>' . $row['hoster_id'] . '</td>';
echo '<td>' . $row['hoster'] . '</td>';
echo '<td>' . $rank . '<td>';
echo '</tr>';
$wpdb->update(
'fhw_filehosters',
array(
'alexa' => $rank,
'alexacheck' => 1
),
array( 'hoster_id' => $row['hoster_id'] ),
array(
'%d',
'%d'
),
array( '%d' )
);
flush(); // <----- NOT working.
}
?>
</tbody>
</table>
<?php
function alexaRank( $url ) {
$request_url = "http://data.alexa.com/data?cli=10&url=".$url;
$xml = simplexml_load_file($request_url) or die("feed not loading");
return $xml->SD->POPULARITY['TEXT'];
}
我有这个脚本,我使用没有 wordpress的 wordpress 数据库类。我将行限制为 200,因为否则我会遇到诸如页面加载需要数年的问题,并且可能 php 执行时间来自 alexa 函数的 xml 需要很长时间。我在该数据库中有很多要检查的 url,我想用一个操作来更新它们,这意味着删除 200 限制。我该怎么做才能让它像一次做 50 个,然后输出然后继续?阿贾克斯?我该怎么做?
更新1:
正如我在评论中所说,我正在寻找一些东西来使我的网站(在后台)发生这种情况,我实际上并不确定此时是否涉及 php 执行时间限制,但对于“一次性”解决方案我刚刚在队列末尾测试了 flush() 并且它不起作用!
但是我正在寻找一个常规功能,现在我更新了问题,答案非常通用,我不是那个 exp。我很想看到一些实际的代码。如果那太多并且往往是“给我写一个程序”,那么我必须通过挖掘一段时间来解决这个问题。然后,我将接受最有帮助的答案。