php - mySQL 这段代码有问题吗?

标签 php mysql

我在使用此代码时遇到问题,希望有人可以提供帮助。

基本上,我们遇到一个问题,即当该脚本按顺序运行数百次时,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/

相关文章:

MySQL 将行转为动态数量的列

mysql - 内连接顺序

php - 在文件加载之前替换页面内容?

PHP登录错误基本

php - 获取一个值介于两个列值之间的数据库结果

mysql - SQL文件夹实体去重流程

MySQL Workbench EER 图更改表格颜色

php - Drupal VS Zikula

Phpunit,模拟 SoapClient 是有问题的(模拟魔术方法)

mysql - 在一个 MySQL 命令中选择 Max 和 Min 记录