我在使用此代码时遇到问题,希望有人可以提供帮助。
基本上,我们遇到一个问题,即当该脚本按顺序运行数百次时,mySQL 会耗尽连接。
https://gist.github.com/anthonyTS/b6c46d54ee8bf2d714b8
这是数据库类:
https://gist.github.com/anthonyTS/89f5a831e31d970fb5e1
这是我得到的错误:
E_ERROR: Call to a member function query() on a non-object
堆栈跟踪:
in DB::single called at /var/www/html/scripts/stalk/db.php (68)
in DB::single called at /var/www/html/scripts/stalk/beanstalk_check_monitoring_logs.php (88)
in {closure} called at /var/www/html/application/libraries/Stalk.php (80)
in Stalk::background called at /var/www/html/scripts/stalk/
beanstalk_check_monitoring_logs.php (188)
最佳答案
您应该将数据库初始化:
$con = mysql_connect(DB_HOST, DB_USER, DB_PASS);
mysql_select_db(DB_DATABASE);
$DB = new DB(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
在你的上方:
$stalk = new Stalk(array(BEANSTALKD_SERVER, BEANSTALKD_PORT));
在脚本顶部,仅创建一次数据库连接,但不在循环中 while(true)
- 这确实是个坏主意:-)
因为你使用了一些对我来说很奇怪的函数声明:
$stalk->background(function() {
$tube = 'check-monitoring-logs';
...
您可以像这样调用数据库实例:
$stalk->background(function() {
global $DB;
$tube = 'check-monitoring-logs';
...
并将 DB::
的所有调用替换为 $DB->
。
关于php - mySQL 这段代码有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33371001/