PHP如何控制Mysql执行时间

在php后台, 我们经常要做一些mysql长查询. 假如一条sql执行时间60秒, php可否设定如果msyql 执行时间超过30秒时, 需要终止mysql查询.

阅读 8.2k
3 个回答

php.ini有个设置可以来设定一个请求里的mysql连接超时时间。

phpini_set('mysql.connect_timeout', 30); 

但是这是针对你脚本里所有本次的请求mysql的超时时间,你的问题是想设置一条sql的超时时间,这个是没有的,貌似办不到。

mysqli的话,还能设置
$mysqli = mysqli_init();
$mysqli->options(MYSQL_OPT_READ_TIMEOUT, 30);

除了上边的mysql库的设置,还有一种方式就是把每次查询都当做一种异步执行,然后去监控这个异步的执行时间,超过三十秒就exit或者return,不过效率的高低就看代码怎么写啦。php7也是引入了协程之类的,肯定有一个这样的解决方案,很多异步底层框架也是可以考虑的,比如swoole,如果非要有这样的一个功能的话,这个应该是可行之道。感觉写好了,也许性能会更好,对于你的业务。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题