作者roga (任性)
看板PHP
标题Re: [请益] 先印出讯息再执行外部指令的作法
时间Wed May 25 01:29:35 2011
※ 引述《Godkin (Nostalgie)》之铭言:
: 请问各位前辈,
: 小弟目前正着手制作一个网站,
: 网站的功能可让使用者在填写资料、上传档案後,
: 用email通知使用者一些资讯,
: 此时网站中有一支外部程式来处理使用者上传的档案
: 问题就在这环节, 因为这外部程式需要的执行时间颇久,
: 所以此时必须先在网页上告知使用者可以先关闭浏览器,
: 待处理完毕之後, 再发email通知使用者连上某个link去看结果
: 我参考了网路上一些解法,
: 如pcntl_fork() 或是 proc_open()等作法
: 但仍不是很清楚这些multi-processes的概念, 像是pipe
这个地方要注意,你 fork 出来的东西,万一 parent 死了,child 就没了。
: 此外, 我所使用的外部程式并不是一般系统指令
: 需额外加上一些参数, 如: xxx.sh -s -t -i $input -o $output这种指令
: 能否请有经验的前辈指点一二?
: 小弟感激不尽!
你可以考虑一下 gearman 这类的解决方案 (
http://gearman.org/ )
收到上传档案之後,把你要做的事情 (例如: 待处理的档名) 透过的 Client API
写到 Job Server ,基本上这样就结束了,之後背景的 Worker 再处理由 Job Server
拿到的任务(待处理的档名),处理完就把连结寄出去,让使用者看结果。
如果觉得上面的方法太复杂,也可以弄简单一点,自行维护一个列表,
然後用 cron 去扫那个列表来做,做完一笔就发一次信给使用者也可以。
--
The Internet: where men are men, women are men, and children are FBI agents.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.220.104.63
1F:推 Godkin:非常感谢!! 05/25 15:18