如何在TideSDK应用程序的后台运行 MyDaemon.php ?
MyDaemon.php - 这是我完全准备好的控制台软件(很多代码,运行其他我的PHP脚本,运行其他软件等)。这是无尽的PHP脚本。它必须在TideSDK APP之后启动并在退出前一直处于活动状态(用户不关闭应用程序)。 TideSDK显示来自 MyDaemon.php 的状态,并且几乎没有按钮来控制它。
问题1:如何在 MyDaemon.php 中启动
Ti.Process.createProcess("?path/to/php/from/tide? -f MyDaemon.php");
在“path / to / php / from / tide”中写什么?我的用户的目标计算机没有php包。我想从TideSDK运行php,如控制台模式。我在TideSDK Developer中包含了PHP功能和使用“Run with Runtime”按钮。我查找了TideSDK中的所有文件,但没有像“php”(执行文件),只有libs。
问题2:我尝试使用
< iframe width=0 height=0 src="MyDaemon.php"></ iframe>
但是TideSDK无法启动UI APP,因为无法在帧中获取FULL源。 MyDaemon.php 是没有用的。我怎样才能包含&lt; IFRAME&gt; 在 ASYNC 模式下,就像真正的浏览器一样?
我尝试使用这个技巧:
<iframe width=0 height=0 src="" name="php">< /iframe>
<script>setTimeout("frames.php.location.href=MyDaemon.php", 1000)</ script>
但它也不起作用(UI APP启动,但在执行此帧后暂停)。
MyDaemon.php 可以任何方式与TideSDK APP沟通:
重要的是: MyDaemon.php 想要在控制台中启动其他php文件!因为第一个过程运行了很多孩子来计算很长的任务。我可以要求TideSDK开始这个孩子,不要在 MyDaemon.php 中使用“exec(/ bin / php -f second.php)”。
但是我不想在我的APP中加入双PHP二进制文件,因为TideSDK APP已经拥有它了!在dist中有很多额外的空间。
谢谢,对不起我的语言。
答案 0 :(得分:0)
我认为你应该使用Ti.Process.CreateProcess()函数,你可以在这里接收你正在使用的命令的输出(我使用的是JS语法,而不是php,所以我不需要包含额外的库来执行命令或写/读操作)
最终的程序应如下所示:
var cmd = ["ls","-la","/www"];
var echo = Ti.Process.CreateProcess(cmd);
echo.setOnReadLine(function(data) {
console.log(data);
});
echo.setOnExit(function(data){
console.log('process ended');
console.log(data)
});
echo.stdout.attach(echo.stdin);
echo.launch();
而不是console.log,您可以将命令输出传递给div。
另外,除了main.html之外,你不能加载另外的脚本。 TideSDK不是一个基于Web的结构化平台,你可以通过url访问域内的二级页面(比如app://main.html是唯一一个要加载的页面,试过没有运气来调用其他页面) “),而是模块化您的应用程序以加载主页面内的元素。
现在,在这里创建守护进程是一种风险。您需要注意,根据您刷新内容的方式,它可以分别增加CPU使用率。
我建议你使用上面写的内容对shell命令使用javascript循环。你不需要真正的“守护进程”或辅助脚本,因为TideSDK可以提供TideSDK内部的某些扩展