2017-01-10 39 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); 
    } } 
    
  • 只是嘗試這種方式。