我让Ubuntu运行XAMPP(灯堆栈:Linux、Apache、MySQL、PHP、Pear)。我想将PHP和Beanstalkd一起使用来创建一个简单的队列,当用户进入page1.PHP时,会将JOB发送到queue,以便WORKER捕获。JOB将是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的东西存在,我读到它是一个包装对于beanstalkd,很多人都在网上使用它,但我不确定这是否是一个要求。有人能引导我进入正确的方向吗?我需要调用什么函数,或者我需要在linux终端中执行什么代码,才能让这个例子发挥作用非常感谢所有的反馈,这将帮助我本周不再放松头发
找到解决方案:
经过更多的研究,我终于把它发挥作用了!为了达到这一点,我们少了一大笔钱。过程如下:
- 在linux终端中执行
sudo apt-get install beanstalkd
以安装beanstalkd - 执行
sudo apt install composer
安装composer,这是建议用于安装pheanstalk的程序 -
创建一个
composer.json
文件,让composer知道要下载哪个库以及所述库的版本。例如:{ "require": { "pdapheanstalk": "2.1.1" } }
-
在linux终端执行
composer install
。这必须在与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. ?>