首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从web用户界面控制CLI PHP脚本

从web用户界面控制CLI PHP脚本
EN

Stack Overflow用户
提问于 2011-09-02 15:27:36
回答 3查看 314关注 0票数 0

我有一个应用程序,其中有一个转储操作,它不断地从web服务中检索xml流,解析它,然后将其转储到mysql DB中。

现在,我正在UI中执行所有的转储操作,转储数据和操作数据都是一件很痛苦的事情。

因此,我创建了一个单独的CLI脚本,它将负责转储操作,前端可以每秒轮询数据库,看看它是否有新数据,这将是一种简单得多的方式。但现在唯一的问题是,我无法从web UI控制cli脚本。

也就是说,我希望能够从UI启动转储操作并停止它。我尝试过这种我以前见过的方法。

代码语言:javascript
复制
while(true) {
if(file_exist($file)) {
//do action 
} else { 
break;
}
}

因此,我将从前端删除停止操作时的文件,这种方法存在各种问题,所有这些似乎都不是正确的方法。那么,有没有更好的方法从Web页面UI控制命令行脚本呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-02 15:32:31

既然脚本已经拥有数据库访问权限,为什么不为CLI脚本创建一个控制表,其中包含它应该执行的操作?每次脚本循环时,您都需要从表中提取记录。

你可以用一行(也许你已经有了一个你可以(Ab)使用的设置表)来修复它,它只包含一个命令。如果它是1、"run“、true或任何你喜欢的值,你的脚本就会继续,否则就会停止。

然后,您可以从Web UI“发送”命令,这些命令将存储在指定的表中。

票数 1
EN

Stack Overflow用户

发布于 2011-09-02 15:34:38

只要您不想使用kill http://linux.about.com/library/cmd/blcmdl_kill.htm粗暴地杀死正在运行的脚本或向正在运行的脚本发送消息,大多数方法都会使用类似的方式发送数据。

您可以使用特殊的数据库记录或表在脚本之间、文件系统中的特殊文件或共享memory...etc之间发送/接收命令和消息。它们都涉及异步消息传递方法。你最好把你的脚本设计成消耗尽可能少的资源,这样你就不会真的杀死它了。

您正在使用的方法(对于文件)实际上非常简单和健壮,但它只单向发送消息,并且只有一种类型的消息。

票数 0
EN

Stack Overflow用户

发布于 2011-09-02 15:45:29

使用exec是一种简单的方式来“控制”你的命令行界面脚本,但是这是一个安全风险,如果你的脚本不在内部服务器上,我不建议你这么做。相反,我建议您创建一种守护程序脚本(我建议这样做,但它可能更难实现)或通过cron定期运行您的CLI脚本(window上的计划任务)。也许每3分钟一次。web用户界面和CLI脚本使用DB相互‘对话’。例如:web用户界面将发布CLI脚本必须处理的数据,CLI脚本将在处理完成后发布数据。这种方法可能会有并发问题,但如果应用程序不是很大,即每秒数千次查询,那么这就不是问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7280360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档