2012-04-15 45 views
0

如何在不需要加載頁面的情況下運行文件(mysql查詢循環)。是通過使用cronjob的唯一方法還是有其他解決方案。 我到目前爲止嘗試過的解決方案: 1)保持php文件打開並每10分鐘自動重新加載一次。 2)當用戶在頁面上時使用ajax加載頁面。 問題是;查詢循環,需要時間完成。如何在不需要堅持重新加載頁面的情況下建立這種方式。 代碼:加載循環查詢的好方法

<meta http-equiv="refresh" content="600" > 
<?php 
    include("./includes/connect.php"); 
    $i = 1; 
    $numberOfRows = mysql_query('SELECT COUNT(`id`) FROM table_name'); 
    $scoreboardquery = mysql_query("SELECT * FROM table_name ORDER BY points DESC"); 
    while(($row = mysql_fetch_assoc($scoreboardquery)) || $i<=$numberOfRows){ 
     $scoreid = $row['id']; 
     $mysql_qeury = mysql_query("UPDATE table_name SET scoreboard_rank = '$i' WHERE id = '$scoreid'"); 
    $i++; 
    } 
      if($mysql_qeury){ 
      echo "Done!"; 
     }else 
      echo "Not Done"; 
?> 

提供有關什麼,我試圖做一個清晰的概念。我試圖根據他們的積分降序給用戶一個排名(第一,第二,第三)。 因此,如果有任何解決方案來實施我想要做的事情,那麼請更好地出面。

+0

嘗試爲表更新過程創建一個存儲過程,它將從應用程序中刪除循環的負載,並且會更快。 – ray 2012-04-15 04:19:30

+0

開發系統時,我跑了3次性能測試,發現更新應該遠離主文件。 – 2012-04-15 04:34:54

+0

是否沒有觸發因素將獎勵給用戶?在查詢和while循環中,它看起來像試圖增加字段scoreboard_rank而沒有任何條件。你不能嘗試一個單一的更新查詢做一個增量的這個領域而不是循環? – ray 2012-04-15 05:06:20

回答

0

運行在後臺,使用exec來從命令行調用它

exec("nohup php file.php >/dev/null 2>&1 &"); 

添加路徑,如果需要的文件,有時需要路徑PHP。