这段代码的mySQL问题


mySQL problems with this code?

我有这个代码的问题,希望有人能帮助。

基本上我们有一个问题,即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->的所有呼叫