无法使Beanstalkd队列适用于PHP
作者:互联网
我有运行XAMPP(灯栈:Linux,Apache,MySQL,PHP,Pear)的Ubuntu.我想一起使用PHP和Beanstalkd来创建一个简单的队列,当用户进入page1.php时,会将JOB发送到QUEUE以供WORKER捕获.该作业将是WORKER随后执行的SQL语句:
到目前为止,我所做的是:
>已安装Beanstalkd:sudo apt-get install beanstalkd
>开发了php代码,并且必须在page1.php中完成“工作”.这项工作是将sql语句$sql发送到队列以供工作人员执行(在以后的版本中
这项工作将变得更加复杂,因此队列系统将变得更加重要.):
page1.php中:
if (isset($_SESSION['authenticated']))
{
//if the user is logged in, send an sql statement to the queue
$user_id = $_SESSION['id'];
$sql = "UPDATE user_table SET count = count + 1 WHERE id = {$user_id}";
//... missing code that would send the statement
}
?>
>制定了工作人员必须执行的操作.
工人:
<?php
$stmt = $conn->query($sql);//simple update
?>
问题/问题:
问题是我不知道创建工作者的调用函数,发送队列的调用函数.我在网上搜索了各种示例,
但是没有完整的解释,而且解释很模糊.我已经看到存在一种叫做pheanstalkd的东西,我读到它是一个包装纸
对于beantalkd,很多人都在网上使用它,但是我不确定这是否是必需的.任何人都可以引导我朝着正确的方向前进,我需要调用什么功能或者我需要在linux终端中执行什么代码才能使这个示例正常工作?非常感谢所有反馈,这将帮助我在本周不再失去任何头发.
解决方法:
找到的解决方案:
经过更多研究后,我设法使其正常工作!到这一点,缺少了可观的数量.该过程如下:
>在linux终端中执行sudo apt-get install beanstalkd来安装beanstalkd.
>执行sudo apt install composer来安装composer,这是推荐用于安装pheanstalk的程序.
>创建一个composer.json文件,该文件将使作曲家知道要下载的库以及该库的版本.例如:
{
"require": {
"pda\pheanstalk": "2.1.1"
}
}
>在linux终端中执行composer安装.这必须在与composer.json文件相同的文件夹中完成.
>包括将启动Pheanstalk类的必要代码,并按说明使用它.就是这样!示例代码如下:
<?php
require_once('vendor/autoload.php');//require the autoload file provided by
//composer
//Initiate an instance of the Pheanstalk class
$pheanstalk = new Pheanstalk_Pheanstalk('127.0.0.1');
//adding a job to queue/tube testtube:
$pheanstalk->useTube('testtube')->put('message');
//obtaining the job by a worker:
$job = $pheanstalk->watch('testtube')->ignore('default')->reserve();
echo $job->getData;//outputting the message
$pheanstalk->delete($job);//deleting the job from the queue.
?>
标签:php,linux,queue,beanstalkd 来源: https://codeday.me/bug/20191013/1907288.html