我试图让Pheanstalk为PHP工作,但我无法加载它。
我从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 :(得分:4)
我写了一篇关于Beanstalk,Beanstalkd和Pheanstalk的文章;
检查出来:How to install Beanstalkd and Pheanstalk on Ubuntu
您的问题的解决方案就在那里。
1)。使用Ubuntu Desktop
安装Server
或Virtual Machine
。
我在这个例子中使用了Oracle VM VirtualBox
。
确保已设置Bridged Network Connection
。
在被要求时设置用户名和密码。
我用过:
用户名:william
密码:123456
2)。启动Ubuntu并登录
3)。以超级用户身份登录
使用:sudo su
并在请求时输入超级用户密码(我的是:123456);
4)。安装Open SSH
并通过Ubuntu virtual machine
访问Putty
。
docs: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/
docs: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 ax
ps ax | grep豆
找到beanstalkd.conf
updatedb的
找到beanstalkd.conf
nano /etc/default/beanstalk
uncomment last line in order to save persistent mode to active
11)。安装Pheanstalk
docs: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
例子: 如何将数据放在tube / 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.'}');
}
?>
使用:php put.php 并且将开始放置过程 信息!打开的实例越多,管上的数据就越多
如何从tube / 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
docs: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)。就是这样!
答案 1 :(得分:0)
虽然Ionut的回答对于让Pheanstalk工作是可行的,但它实际上并没有回答提出的问题:你如何从项目回购的git克隆中获得Pheanstalk工作? (这里暗示您不想使用Composer进行安装,这是我将用于此答案的假设。)
主要问题是你不能只require('src/Pheanstalk.php');
然后开始使用Pheanstalk类。 Pheanstalk库在很大程度上依赖于PHP类自动加载,因此如果没有这种设置,它将如原始问题中所述那样出错。
如果您的项目已经有PSR-4兼容的自动加载器,那太好了!将它指向composer.json文件的psr-4部分并观察神奇的工作。
然而,对于其他所有人,您希望在对类似问题的回答中使用Thibault提供的功能:https://stackoverflow.com/a/39774973
假设您已将Pheanstalk git repo克隆到您pheanstalk
的项目中,那么您可以使用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();