我有这个代码的问题,希望有人能帮助。
基本上我们有一个问题,即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));
在脚本的顶部,只创建一次DB连接,而不是在循环while(true)
-这真的是一个坏主意:-)
,因为你用了一些奇怪的函数声明:
$stalk->background(function() {
$tube = 'check-monitoring-logs';
...
可以这样调用DB实例:
$stalk->background(function() {
global $DB;
$tube = 'check-monitoring-logs';
...
,替换DB::
对$DB->
的所有呼叫