【问题标题】:Laravel Beanstalkd job cannot connect to remote server via sshLaravel Beanstalkd 作业无法通过 ssh 连接到远程服务器
【发布时间】:2015-01-09 14:30:26
【问题描述】:

我的 Web 应用程序中有一个如下所示的工作流程(内置于 Laravel 4):

1) 用户上传文件(最大 50mb 左右)
2) 文件移动到临时目录
3) 创建的队列作业执行以下操作:
- 将文件上传到亚马逊 s3
- 通过 SSH 连接到另一个文件处理服务器并将文件传输到那里的文件夹。
- 删除临时文件

要连接到远程服务器并在排队的作业中上传文件,我正在使用:

SSH::into('processing')->put($localPath, $remotePath);

当我使用“同步”驱动程序将该作业排队时,一切正常,所以我知道环境和权限是正确的。问题是,当我切换到 beanstalkd 作为我的队列驱动程序时,作业失败并显示以下内容:

[2015-01-09 14:15:40] production.ERROR: exception 'RuntimeException' with message 'Unable to connect to remote server.'

Beanstalkd 作业在应用程序的其他地方运行良好(其他都没有 ssh 命令)。

我正在使用用户名和密码进行连接,因此这不是关键权限或密码短语问题。有什么想法吗?

【问题讨论】:

    标签: laravel laravel-4 beanstalkd


    【解决方案1】:

    如果您知道文件已经上传到 S3,为什么不生成一个新作业,然后在另一个文件处理服务器上运行(步骤 3b),让它从 S3 下载文件,如果它需要它?

    除此之外,您还需要对 SSH 上传进行更多调试。

    【讨论】:

    • 我认为这最终将成为获取文件的解决方案。我只想知道为什么 SSH 连接失败,以防我将来需要在排队的作业中使用 SSH。当我 SSH 进入服务器以创建目录(在“同步”队列模式下运行时也可以正常工作)而不是文件上传时,实际上引发了异常。谢谢回复。 :)
    猜你喜欢
    • 2017-08-01
    • 2020-06-17
    • 2020-07-05
    • 1970-01-01
    • 2023-03-08
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多