2014-10-01 28 views
3

我試圖讓Pheanstalk爲PHP工作,但我無法加載它。如何在PHP中加載Pheanstalk?

我下載的源代碼https://github.com/pda/pheanstalk,讓我感動的src/Pheanstalk到我的項目目錄,然後做在test.php如下:

use Pheanstalk\Pheanstalk; 
$pheanstalk = new Pheanstalk('127.0.0.1'); 

但是這給了我以下錯誤:

Fatal error: Class 'Pheanstalk\Pheanstalk' not found in test.php on line 2 

如何從克隆的git存儲庫中使用Pheanstalk?

+0

也許這將幫助:http://stackoverflow.com/questions/20181181/composer-autoloading – Quantastical 2014-10-01 03:05:35

+0

@Quantastical感謝,尋找到它。我不知道什麼作曲家雖然... – bodacydo 2014-10-01 03:19:14

+0

我也是,但看着pheanstalk的github,它聲明'//希望你正在使用Composer自動加載.'我認爲這是基於JSON描述自動加載類文件的某種方式源代碼在哪裏存在,但是你可以簡單地在'src/Pheanstalk'代碼中包含'include(...);'。 – Quantastical 2014-10-01 03:27:39

回答

3

我寫了一篇關於Beanstalk,Beanstalkd和Pheanstalk的文章;

檢查出來:How to install Beanstalkd and Pheanstalk on Ubuntu

你的問題的解決方案是存在的。

1)。使用Virtual Machine安裝Ubuntu DesktopServer

本例中我使用了Oracle VM VirtualBox

確保設置了Bridged Network Connection

請求時設置用戶名和密碼。

我使用:

用戶名:william 密碼:123456

2)。啓動Ubuntu並登錄

3)。以超級用戶身份登錄

使用:sudo su 並在請求時輸入超級用戶密碼(我的是:123456); 4)。安裝Open SSH並通過Putty訪問Ubuntu virtual machine

文檔:https://help.ubuntu.com/10.04/serverguide/openssh-server.html

使用:apt-get install openssh-client

安裝客戶端,然後

使用:apt-get install openssh-server

安裝服務器; 5)。安裝Apache2 Web服務器

使用:apt-get install apache2

現在請在瀏覽器中執行以下操作:

http://localhost

和 虛擬機的ip(我的是192.168.1.104

6)。安裝MySQL

使用:apt-get install mysql-server php5-mysql

設置密碼MySQL root用戶:123456 重複密碼:123456

7)。安裝PHP5

使用:apt-get install php5 libapache2-mod-php5 php5-mcrypt

8)。安裝cURL

使用:apt-get install curl

9)。安裝Composer

官方網站:https://getcomposer.org/ 文檔:https://getcomposer.org/doc/00-intro.md(入門)

使用:curl -s http://getcomposer.org/installer | php 或 使用:curl -sS https://getcomposer.org/installer | php 現在,composer.phar必須移動和轉換

使用:mv composer.phar /usr/bin/composer

10)。安裝Beanstalkd

使用:apt-get install beanstalkd

現在,讓我們確保beanstalkd persistent mode is active

PS斧頭

PS斧| grep的豆

定位beanstalkd.conf

updatedb的

定位beanstalkd.conf

nano /etc/default/beanstalk

uncomment last line in order to save persistent mode to active

11)。安裝Pheanstalk

文檔:https://github.com/pda/pheanstalk

變化目錄 使用:cd /var/www/html

創建一個新的目錄:在/ var/www/html等/ pheanstalk_test 使用:mkdir pheanstalk_test

目錄更改爲新創建目錄 用途:cd pheanstalk_test

在創建這個新的目錄 使用composer.json文件:nano composer.json

寫出下列文件中的數據: { "require":{ "pda/pheanstalk":"v3.0.0" } }

,並保存文件(按Ctrl鍵+ X鍵,按下Y鍵,按ENTER鍵)

使用:composer update

現在,供應商文件夾數據應該開始下載

或使用:git clone https://github.com/pda/pheanstalk.git

例子:PHP put.php 和看跌過程將開始 信息: 上管/ s的

<?php include 'vendor/autoload.php'; use Pheanstalk\Pheanstalk; $pheanstalk = new Pheanstalk('127.0.0.1'); while(true){ $tube_id=rand(1,9); $r1=rand(1,10000000); $r2=rand(1,10000000); $pheanstalk->useTube('testtube'.$tube_id)->put('{'.$r1.':'.$r2.'}'); } ?>

使用如何把數據!打開更多的情況下,更多的數據被提上了管/ s的

如何從管/秒

<?php include 'vendor/autoload.php'; use Pheanstalk\Pheanstalk; $pheanstalk = new Pheanstalk('127.0.0.1'); while(true){ $tube_id=rand(1,9); $job=$pheanstalk->watch('testtube'.$tube_id)->ignore('default')->reserve(); if($job){ echo $job->getdata(); $pheanstalk->delete($job); } } ?>

使用的數據:PHP get.php 和獲取過程將開始 信息!越多的實例打開,處理的數據越多;

12)。安裝Beanstalk Console

文檔:https://github.com/ptrofimov/beanstalk_console

更改目錄

使用:cd /var/www/html

創建一個新的文件夾

使用:mkdir beanstalk_console

使用:git clone https://github.com/ptrofimov/beanstalk_console.git

更改文件權限:storage.json chmod 777 storage.json

現在,訪問beanstalk console,寫在瀏覽器中:http://localhost/beanstalk_console/public

13)。就是這個!

+0

謝謝。雖然我沒有看到'vendor/autoload.php'。這個文件夾應該放在哪裏? – bodacydo 2014-10-03 07:00:14

+0

第11步:在步驟11之後安裝Pheanstalk – 2014-10-03 07:02:54

+0

,供應商文件夾和composer.lock文件應該在那裏 – 2014-10-03 07:03:54

0

儘管Ionut的答案可以讓Pheanstalk工作,但它實際上並沒有回答提出的問題:你如何從項目回購的git克隆中獲得Pheanstalk? (這裏隱含的是你不想使用Composer進行安裝,這是我將用於這個答案的假設。)

主要問題是,你不能只是require('src/Pheanstalk.php');然後開始使用Pheanstalk類。 Pheanstalk庫很大程度上依賴於PHP類的自動加載,所以如果沒有這個設置,它會按照原始問題中的描述出錯。

如果您的項目已經有符合PSR-4標準的自動裝載機,那就太棒了!將它指向composer.json文件的psr-4部分並觀看魔術作品。

對於其他人,但是,你要使用由巴爾在他的回答中提供的功能,以類似的問題:https://stackoverflow.com/a/39774973

假設在pheanstalk您在Pheanstalk git倉庫克隆到你的項目,你可以那麼只需使用loadPackage('pheanstalk'),它應該都可以正常工作。

完整的示例:

function loadPackage($dir) 
{ 
    $composer = json_decode(file_get_contents("$dir/composer.json"), 1); 
    $namespaces = $composer['autoload']['psr-4']; 

    // Foreach namespace specified in the composer, load the given classes 
    foreach ($namespaces as $namespace => $classpath) { 
     spl_autoload_register(function ($classname) use ($namespace, $classpath, $dir) { 
      // Check if the namespace matches the class we are looking for 
      if (preg_match("#^".preg_quote($namespace)."#", $classname)) { 
       // Remove the namespace from the file path since it's psr4 
       $classname = str_replace($namespace, "", $classname); 
       $filename = preg_replace("#\\\\#", "/", $classname).".php"; 
       include_once $dir."/".$classpath."/$filename"; 
      } 
     }); 
    } 
} 

loadPackage(__DIR__."/pheanstalk"); 

use Pheanstalk\Pheanstalk; 

$pheanstalk = new Pheanstalk('127.0.0.1'); 

echo $pheanstalk->getConnection()->isServiceListening();