Я пытаюсь заставить 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-репозитория?
Я написал статью о бобовом стебле, бобовом стебле и финстальке;
Проверьте это: Как установить Beanstalkd и Pheanstalk в 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
а также
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
пс топор
пс топор | бобы
найдите 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, нажмите клавишу ВВОД)
использовать: 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). Это оно!
Хотя ответ Ionut является жизнеспособным для того, чтобы заставить Pheanstalk работать, на самом деле он не отвечает на поставленный вопрос: как вы получаете Pheanstalk, работающий из git-клона репозитория проекта? (Здесь подразумевается, что вы не хотите использовать Composer для установки, это предположение, которое я буду использовать для этого ответа.)
Основная проблема в том, что вы не можете просто require('src/Pheanstalk.php');
и затем начните использовать класс Pheanstalk. Библиотека Pheanstalk в значительной степени зависит от автозагрузки классов PHP, поэтому без этой настройки произойдет ошибка, как описано в исходном вопросе.
Если у вас уже есть PSL-4-совместимый автозагрузчик для вашего проекта, то отлично! Направьте его в раздел psr-4 файла composer.json и посмотрите на магическую работу.
Однако для всех остальных вы захотите использовать функцию, предоставленную Тибо в ответе на аналогичный вопрос: https://stackoverflow.com/a/39774973
Предполагая, что у вас есть клон Pheanstalk git в ваш проект по адресу 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();