1

大家好,我的 pheanstalk 有问题,对不起,这是我第一次使用它。我的项目涉及一个保存 5000 个条目的 php,当我工作时,由于流量请求而得到 502。所以我对这些的解决方案是在这个过程中使用一个 pheanstalk 这里是我下面的代码,这是可以的。我已经在服务器上安装了 beanstalk。

    require("vendor/autoload.php");
use Pheanstalk\Pheanstalk;
$pheanstalk = new Pheanstalk('127.0.0.1');   

#producer
$put = $pheanstalk->useTube("ashimatube".date("His"))
->put(json_encode(array("test"=>date("Yhs"))));

#worker
$job = $pheanstalk->watch("ashimatube".date("His"))
->ignore("default")->reserve();
4

1 回答 1

1

豆茎

Beanstalk用于由Philotic , Inc 开发的 Facebook,用于改进 Facebook 应用程序(超过 1000 万用户)上原因的响应时间。Beanstalk 将最常见页面的平均响应时间减少到原始页面的一小部分,从而显着改善了用户体验。

这是 Codeigniter 的示例

  1. 这里下载Pheastalk

Pheastalk是 beanstalkd 队列的 PHP 客户端。

  1. 在里面添加Pheanstalk文件夹application/libraries

  2. 在. pheanstalk.php_application/config

  3. 添加以下代码。

    <?php
    
      if (!defined('BASEPATH'))
        exit('No direct script access allowed');
    
       $config['ip'] = '192.168.0.2'; // Example IP, Enter your IP
       $config['port'] = 11300;
    
  4. 在 .下创建 Pheanstalk.php(P 大写)application/libraries

  5. 添加以下代码。

     if (!defined('BASEPATH'))
       exit('No direct script access allowed');
    
     /** Pheanstalk root directory */
     if (!defined('PHEANSTALK_ROOT')) 
     {
          define('PHEANSTALK_ROOT', dirname(__FILE__) . '/');
          require(PHEANSTALK_ROOT . 'pheanstalk/pheanstalk_init.php');
     }
    
     class Pheanstalk extends Pheanstalk_Pheanstalk 
     {
    
        public function __construct($params) 
        {
            parent::__construct($params['ip'], $params['port']);
        }
     } 
    
  6. 像这样创建一个控制器。

     Class Test extends CI_Controller 
     {
    
      public function index() 
      {
        $this->load->library('pheanstalk');
        var_dump($this->pheanstalk->listTubes());
        $this->pheanstalk->useTube('testtube')->put("job payload goes here\n");
    
        $job = $this->pheanstalk
                ->watch('testtube')
                ->ignore('default')
                ->reserve();
    
        echo $job->getData();
    
        $this->pheanstalk->delete($job);
    } }
    

试试这个方法。

于 2017-01-10T06:30:03.877 回答