3

我试图让 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?

4

2 回答 2

5

我写了一篇关于 Beanstalk、Beanstalkd 和 Pheanstalk 的文章;

看看:如何在 Ubuntu 上安装 Beanstalkd 和 Pheanstalk

您的问题的解决方案就在那里。

1)。安装Ubuntu DesktopServer使用Virtual Machine.

我用于Oracle VM VirtualBox这个例子。

确保Bridged Network Connection已设置 a。

要求时设置用户名和密码。

我用了:

用户名:william 密码:123456

2)。启动 Ubuntu 并登录

3)。以超级用户身份登录

使用:sudo su 并在请求时输入超级用户密码(我的是:123456);

4)。安装Open SSH并访问Ubuntu virtual machinevia Putty

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

利用:apt-get install openssh-client

安装客户端,然后

利用:apt-get install openssh-server

安装服务器;

5)。安装Apache2网络服务器

利用: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入门)

use:curl -s http://getcomposer.org/installer | php 或 use: curl -sS https://getcomposer.org/installer | php now,composer.phar 必须被移动和转换

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

10)。安装Beanstalkd

利用:apt-get install beanstalkd

现在,让我们确保beanstalkd persistent mode is active

ps斧头

ps斧头| 青豆

找到 beanstalkd.conf

更新b

找到 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

示例:如何将数据放在 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 和一个 put 进程将启动信息!打开的实例越多,管子上的数据就越多

如何从管/秒获取数据

<?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 和一个get 进程将启动信息!打开的实例越多,处理的数据就越多;

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)。就是这个!

于 2014-10-03T06:53:44.080 回答
0

虽然 Ionut 的答案对于让 Pheanstalk 工作是可行的,但它实际上并没有回答提出的问题:你如何让 Pheanstalk 从项目 repo 的 git 克隆中工作?(这里隐含的是您不想使用 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();
于 2017-06-22T02:08:56.327 回答