我正在使用Chris Boulton的resque(php-resque)和resque-scheduler(php-resque-scheduler)的php端口,我也使用标准的resque-web界面来查看作业/队列等。
在我最近安装resque-scheduler并根据说明here为resque-web设置配置之前,我没有遇到任何resque-web问题。
使用php-resque-scheduler我没有任何问题(似乎)安排我的队列被延迟,但是当我登录resque-web并点击"延迟"选项卡我收到以下错误:
URI :: InvalidURIError at / delayed 错误的URI(不是URI?):/ delayed / jobs / Namespace \ Of \ Job \ Class?args = [%7B%22
一旦将作业设置为延迟,我才会收到此错误。
我的感觉是PHP类的命名空间破坏了resque-web路由。我有点难过,因为我并不熟悉Ruby,也不热衷于编辑包文件等。
我在Ubuntu Trusty 14.04上运行ruby 1.9.1,如果有帮助的话。做resque-web -v
给了我:
rack 1.2
sinatra 1.4.5
拉斯维加斯0.1.11
非常感谢您对此的任何帮助!
更新:我尝试为作业设置别名并传递别名类,这不会破坏界面,所以我认为我原来的假设是正确的。它不是一个真正的解决方案,但是可行。
答案 0 :(得分:1)
我的解决方案是在php中为类别名并将别名传递给作业:
NSFileManager *fileManager = [NSFileManager defaultManager];
request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setRequestMethod:@"POST"];
[request setTimeOutSeconds:120];
[request setPostFormat:ASIMultipartFormDataPostFormat];
[request addRequestHeader:@"Content-Type" value:@"multipart/form-data"];
if ([fileManager fileExistsAtPath:filePath] == YES) {
[request setFile:filePath withFileName:@"test.png" andContentType:@"png" forKey:@"FieldName"];
}
答案 1 :(得分:0)
我也有这个问题,原因是resque-web尝试获取类名的URI,但是你的类名有反斜杠,因为PHP命名空间,所以ruby说" Bad URI& #34;,重点是ruby并没有帮助我们逃避 uri。
我不熟悉Ruby / Rails,我只是尝试将resque集成到php,所以我只需要web监视器来查看我的队列/作业状态
所以这是解决此问题的解决方法,仅供参考,我知道这不是最好的方法。
尝试修改gem资源中的resque-scheduler视图
// find your resque-scheduler gem path and modify the delayed.erb file
vim ~/.gem/ruby/2.0/gems/resque-scheduler-4.0.0/lib/resque/scheduler/server/views/delayed.erb
// search this line
URI("/delayed/jobs/#{job['class']}?args="
// modify to
URI.escape("/delayed/jobs/#{job['class']}?args="
那是