我让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
发送到队列以供worker执行(在将来的版本中)
这项工作将变得更加复杂,因此队列系统将变得更加重要。):
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
?>
问题/问题:
问题是我不知道调用什么函数创建一个worker,调用什么函数来发送队列。我在网上搜索了各种例子, 但是没有完整的解释和非常含糊的解释。我看到有一种叫做pheanstalkd的东西,我读到的是一个包装器 对于beanstalkd而且很多人都在网上使用它,但我不确定这是否是一个要求。任何人都可以指导我进入正确的方向,我需要调用哪些函数或者我需要在linux终端中执行哪些代码才能让这个例子正常工作? 非常感谢所有反馈意见,这将有助于我本周不再散发任何头发。
答案 0 :(得分:1)
解决方案:
经过一些更多的研究,我已经设法让它发挥作用!达到这一点时,缺少一笔不错的金额。该过程如下:
sudo apt-get install beanstalkd
以安装beanstalkd。sudo apt install composer
安装composer,这是推荐用于安装pheanstalk的程序。创建一个composer.json
文件,让作曲家知道要下载哪个库以及所述库的版本。例如:
{
"require": {
"pda\pheanstalk": "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.
?>