无法使Beanstalkd队列为PHP工作



我让Ubuntu运行XAMPP(灯堆栈:Linux、Apache、MySQL、PHP、Pear)。我想将PHP和Beanstalkd一起使用来创建一个简单的队列,当用户进入page1.PHP时,会将JOB发送到queue,以便WORKER捕获。JOB将是WORKER随后执行的SQL语句:

到目前为止,我所做的是:

  1. 安装的Beanstalkd:sudo apt-get install beanstalkd

  2. 开发了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
}
?>

  1. 制定了工人必须执行的操作

工人:

<?php
$stmt = $conn->query($sql);//simple update
?>

问题/问题:

问题是我不知道该调用什么函数来创建工作线程,也不知道该用什么函数来发送队列。我在网上搜索了各种例子,但没有完整的解释,也没有非常含糊的解释。我看到有一种叫做pheanstalkd的东西存在,我读到它是一个包装对于beanstalkd,很多人都在网上使用它,但我不确定这是否是一个要求。有人能引导我进入正确的方向吗?我需要调用什么函数,或者我需要在linux终端中执行什么代码,才能让这个例子发挥作用非常感谢所有的反馈,这将帮助我本周不再放松头发

找到解决方案:

经过更多的研究,我终于把它发挥作用了!为了达到这一点,我们少了一大笔钱。过程如下:

  1. 在linux终端中执行sudo apt-get install beanstalkd以安装beanstalkd
  2. 执行sudo apt install composer安装composer,这是建议用于安装pheanstalk的程序
  3. 创建一个composer.json文件,让composer知道要下载哪个库以及所述库的版本。例如:

    {
    "require": {
    "pdapheanstalk": "2.1.1"
    }
    }
    
  4. 在linux终端执行composer install。这必须在与composer.json文件相同的文件夹中完成。

  5. 包括启动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.
    ?>
    

相关内容

  • 没有找到相关文章

最新更新