2017-01-10 102 views
1

嗨我所有的麻烦对我的pheanstalk抱歉,这是我第一次使用它。我的项目涉及到一个保存5000个条目,当我工作时,由于交通请求获取502。所以我的解决方案是在这个过程中使用pheanstalk,这里是我的代码,下面是可以的。我已经在服务器上安装了beanstalk。Pheanstalk queueng列表保留PHP

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(); 
+0

你在哪里保存了Pheanstalk PHP客户端?你是否收到任何错误/警告? –

回答

1

魔豆

豆茎 Facebook中使用Philotic开发股份有限公司到改善的响应时间上Facebook应用程序的原因(具有超过1000万用户)。 Beanstalk将最常见页面的平均响应时间缩短为原始的一小部分,显着改善了用户体验。

这里是笨

  1. here下载Pheastalk样品。

Pheastalk为beanstalkd队列PHP客户端。

  • 添加内部application/librariesPheanstalk文件夹。

  • 创建pheanstalk.php根据application/config

  • 添加以下代码。

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

  • 添加以下代码。

    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']); 
        } 
    } 
    
  • 创建一个这样的控制器。

    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); 
    } } 
    
  • 只是尝试这种方式。