Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将查询运行时限制为2秒_Php_Sql_Limit - Fatal编程技术网

Php 将查询运行时限制为2秒

Php 将查询运行时限制为2秒,php,sql,limit,Php,Sql,Limit,如何将使用php文件调用的SQL的运行时间限制为2秒 这里是我正在使用的一个例子 $output = ''; $sql = "SELECT epf_application.view_url FROM epf_application INNER JOIN app_uri ON epf_application.application_id=app_uri.application_id WHERE app_uri.uri = '$URL' LIMIT 1"; foreach ($xpdo->qu

如何将使用php文件调用的SQL的运行时间限制为2秒

这里是我正在使用的一个例子

$output = '';
$sql = "SELECT epf_application.view_url FROM epf_application INNER JOIN app_uri ON epf_application.application_id=app_uri.application_id WHERE app_uri.uri = '$URL' LIMIT 1";
foreach ($xpdo->query($sql) as $row) {
    $output .= $row['view_url'];
}

我不想限制整个脚本运行时,只限制数据库上的请求,你不能因为查询正在阻塞,而您只知道完成查询需要多长时间


因此,如果查询太慢,您需要优化查询。您可以通过分析和测试,在正确的位置使用
索引,并使用
解释

来实现这一点。应该有明确的文档来设置php.net上SQL调用的超时。您不可能,至少不容易。您的用例是什么,这个查询在做什么?也许你可以把它藏起来?(编辑:啊,这是可能的。如果表中没有匹配的值,我只有一个较长的查询运行时间~4秒。该表最多包含30.000.000行。可能是查询在整个表上运行了多次吗?如果有匹配的值,查询的运行时间会短得多。如果这是真的,我可以使用INDE避免这种行为吗XES?@VolkaRacho在
url
上添加一个
索引
。可能需要一段时间……我通常将
url
二进制哈希一起存储,并且只按
哈希
进行搜索。30000.000行相当多。还要学习
解释
的工作原理并尝试优化。@VolkaRacho尝试在表格上进行查询例如
SELECT*FROM
url`WHERE
url
='%s'LIMIT 1;`并查看没有
JOIN
需要多长时间。通过设置适当的索引解决了这个问题。非常感谢hintah获得了它:0.0010瑞典克朗