2013-07-28 33 views
3

我有一個PHP腳本中的mysqli_query(),通常需要大約10毫秒才能完成。但是,有時需要大約5000毫秒。該查詢對於網站正常運行並不重要,即如果超過10毫秒,它可以被忽略。如何告訴PHP僅等待一段SQL查詢一段時間?

這可能嗎?

喜歡的東西:

<?php 

// microtime here is X 
$query = mysqli_query($connection, "(do something)"); 
// if difference between time now and previous time is bigger than 10 ms, 
// skip waiting for the $query result and go on 

?> 

如果這樣的事情是可能的,可我們也取消正在運行的查詢,讓MySQL服務器知道我們不想要的結果了並停止處理呢?

+0

這似乎不可能; [這個問題](http://stackoverflow.com/questions/9562124/php-mysql-set-connection-timeout)是關於'mysql'的擴展,但是相同的約束可能適用於'mysqli'。 –

回答

1

由於查詢是不敏感的,你應該緩存而不是每次都命中數據庫的結果。

PHP提供了mysqlnd-qcqc用於查詢緩存),它與APC和朋友一起緩存MySQL查詢的結果。

另一種選擇是將緩存模板。 Smarty has this included。這意味着你只渲染一次頁面,然後在一定的時間後渲染它。

相關問題