我的网络应用程序中有一个如下所示的工作流程(内置Laravel 4):
1)用户上传文件(最多50mb左右)
2)文件被移动到临时目录
3)创建排队的工作,执行以下操作:
- 上传文件到亚马逊s3
- SSH到另一个文件处理服务器并将文件传输到那里的文件夹
- 删除临时文件
要连接到远程服务器并在排队作业中上传文件,我使用:
SSH::into('processing')->put($localPath, $remotePath);
当我使用' sync'排队时,一切正常。驱动程序,所以我知道环境和权限是正确的。问题是,当我切换到beanstalkd作为我的队列驱动程序时,作业失败并显示以下内容:
[2015-01-09 14:15:40] production.ERROR: exception 'RuntimeException' with message 'Unable to connect to remote server.'
Beanstalkd作业在应用程序的其他位置运行正常(其他任何一个都没有ssh命令)。
我使用用户名和密码进行连接,因此它不是密钥权限或密码短语问题。有什么想法吗?
答案 0 :(得分:0)
如果你知道文件已经上传OK给S3,为什么不生成一个新的作业,然后在另一个文件处理服务器上运行(步骤3b),让它从S3下载文件,如果需要的话?
除此之外 - 您需要对SSH上传进行更多调试。