PHP开发Linux桌面应用和Android应用思路

Linux上,用tar.xz打包GCC -O3编译的php7cli(3MB)和依赖库php7libs(7MB),大小约10MB.
因为打包了依赖库,所以能做到解压即用,适配所有Linux发行版.
整个应用打包下来,可以做到不超过15MB.
如果源代码不想被别人看到,可以用 php-beast 之类的工具进行加密.
我打包了适用于64位Linux的PHP7:
http://my.oschina.net/eechen/blog/411534
去掉里面的PHP-FPM和PHP-CGI,保留PHP CLI,整个PHP7环境就是10MB左右了.

假设应用安装在/png/php/7.0.0,其下的www作为根目录,启动HTTP服务:
/png/php/7.0.0/bin/php -S localhost:9393 -t /png/php/7.0.0/www
浏览器做界面,访问localhost:9393打开应用.
这两个步骤可以做成一个启动脚本start.sh:
#!/bin/bash
nohup /png/php/7.0.0/bin/php -S localhost:9393 -t /png/php/7.0.0/www >/dev/null 2>&1 &
nohup xdg-open http://localhost:9393/ >/dev/null 2>&1 &
关闭脚本stop.php就更简单了,调用kill关闭PHP CLI进程即可:
<?php
shell_exec('kill '.getmypid());

比如PHP调用系统自带命令lshw或者读取/proc/cpuinfo就能拿到各种硬件信息,包括CPU的即时运行频率等.
PHP可以把命令返回的信息直接写在<pre></pre>,或者转为数组进行精确的哈希操作后输出.
这样,像 雅黑探针 那样,通过Web界面就能获取像Windows上CPU-Z工具的硬件信息.
/proc和/sys这两个文件系统里包含了Linux的各种运行时信息和硬件信息.
通过man proc查查每项的说明,任何语言都能以文本形式访问里面的数据,比如PHP获取内存使用信息:
<?php
$arr = explode("\n", file_get_contents('/proc/meminfo'));
foreach($arr as $k => $v) {
    if(!empty($v)) {
        $tmp = explode(':', $v);
        $new[trim($tmp[0])] = trim($tmp[1]);
    }
}
echo 'MemTotal:   '.$new['MemTotal']."\n";
echo 'MemFree:    '.$new['MemFree']."\n";
echo 'Buffers:    '.$new['Buffers']."\n";
echo 'Cached:     '.$new['Cached']."\n";
echo 'SwapCached: '.$new['SwapCached']."\n";

本地存储用SQLite,浏览器跟本地和服务器交互可以用AJAX或者WebSocket(Swoole),
程序更新时pclose(popen('upgrade.php', 'r'))打开一个CLI进程用file_get_contents()或者curl获取更新包.
进程间可以通过文件系统标记或者SQLite数据库进行通信.

CodeSourcery基于GNU GCC改造的交叉编译器 arm-none-linux-gnueabi 编译的程序能兼容多种ARM架构.
在Linux上把PHP移植到Android上运行的DroidPHP项目就用到了 arm-none-linux-gnueabi-gcc 这个交叉编译器:
https://github.com/DroidPHP/DroidPHP/blob/master/docs/Compiling.md
把PHP部署到客户端Android,WebView做界面,这样用网站开发技术HTML/CSS/JS/PHP/SQL就能够开发Android应用.

你可能感兴趣的:(PHP,node-webkit,桌面开发)