2017-01-10 2 views
1

안녕하세요, 모든 내 pheanstalk에 문제가 생겨 죄송합니다. 이것을 사용하는 것은 처음입니다. 내 프로젝트는 5000 항목 중 하나를 저장합니다. PHP는 트래픽 요청으로 인해 502를 얻습니다. 따라서 이들에 대한 내 솔루션은 아래의 코드가 괜찮은 아래의 프로세스에 pheanstalk를 사용하는 것입니다. 나는 서버에 콩나무를 설치했다. 페이스 북에서 사용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

콩나무

콩 줄기Philotic에 의해 개발, Inc의 (만 10 사용자와) 페이스 북의 응용 프로그램에 대한 원인에 대한 응답 시간을 향상시킬 수 있습니다. Beanstalk은 가장 일반적인 페이지의 평균 응답 시간을 원본의 아주 작은 부분으로 줄여 사용자 경험을 크게 향상 시켰습니다. 여기

here에서 다운로드 Pheastalk
  1. CodeIgniter의

    에 대한 샘플입니다.

Pheastalk는 beanstalkd 큐 PHP 대한 클라이언트이다.

  1. application/libraries 내부 Pheanstalk 폴더를 추가합니다.

  2. application/config 아래에 pheanstalk.php을 작성하십시오.

  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. application/libraries에서 Pheanstalk.php을 (P는 대문자입니다)를 만듭니다.

  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); 
    } } 
    

그냥이 방법을 사용해보십시오.