2014-10-01 4 views
3

Я пытаюсь заставить Pheanstalk работать на PHP, но я не могу его загрузить.Как загрузить 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 

Как я могу использовать Pheanstalk из клонированного хранилища git?

+0

Может быть, это поможет: http://stackoverflow.com/questions/20181181/composer-autoloading – Quantastical

+0

@Quantastical Спасибо, глядя на него. Я не знаю, что такое композитор, хотя ... – bodacydo

+0

Я тоже, но, посмотрев на github pheanstalk, он говорит: // Надеюсь, вы используете автозагрузку Composer. Я предполагаю, что это способ автозагрузки файлов классов на основе описаний JSON где источник живет, но вы можете так же легко включить 'include (...);' в код 'src/Pheanstalk'. – Quantastical

ответ

3

Я написал статью о 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.

документы: 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

и виртуальная машина внутрибрюшинно (шахта была 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

). Установите 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

пс топор

пс топор | 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

создать новый каталог:/вар/WWW/HTML/pheanstalk_test использования: mkdir pheanstalk_test каталога

изменения в новом созданном справочник использование: cd pheanstalk_test

создать файл composer.json под этим новым каталогом использования: nano composer.json

написать следующие данные в файле: { "require":{ "pda/pheanstalk":"v3.0.0" } }

и сохраните файл (нажать + X клавиши Ctrl, нажать клавишу Y, нажмите ENTER ключ)

использование: composer update

теперь данные папки поставщика должны начать загружать

или использование: git clone https://github.com/pda/pheanstalk.git

примеры: , как поместить данные трубки/с

<?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 и процесс положить начнет информацию! чем больше экземпляров открытых, тем больше данных получает положить на трубу/с

как получить данные из трубки/с

<?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

+0

Шаг 11: Установите Pheanstalk –

+0

после шага 11, папка поставщика и файл composer.lock должны быть там. –

0

В то время как ответ Ionut является жизнеспособным для получения работы Pheanstalk, он фактически не отвечает на поставленный вопрос: как вы получаете Pheanstalk, работающий с git-клоном проектного репо? (Неясно, что вы не хотите использовать Composer для установки, что является предположением, которое я буду использовать для этого ответа.)

Основная проблема заключается в том, что вы не можете просто require('src/Pheanstalk.php');, а затем приступить к использованию класс Pheanstalk. Библиотека Pheanstalk в значительной степени опирается на автозагрузку класса PHP, поэтому без этой установки она будет ошибочной, как описано в исходном вопросе.

Если у вас есть автозагрузчик, совместимый с PSR-4 для вашего проекта, отлично! Направьте его в раздел psr-4 файла composer.json и посмотрите на магическую работу.

Для всех остальных, однако, вы хотите использовать функцию, предоставленную Тибо в своем ответе на аналогичный вопрос: https://stackoverflow.com/a/39774973

Предполагая, что вы Pheanstalk мерзавец репо клонировали в свой проект в 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();