aardio 文档

aardio 范例: PHP CGI 回调 aardio

//PHP 回调 aardio
import process.php;
import win.ui;
/*DSG{{*/
var winform = win.form(text="PHP CGI 回调 aardio";right=753;bottom=434)
winform.add(
edit={cls="edit";left=20;top=12;right=734;bottom=404;edge=1;multiline=1;z=1}
)
/*}}*/

//注册多线程全局变量
process.php.threadGlobal = { 
    winform = winform; 
} 

//自定义 HTTP 处理程序
process.php.httpHandle = {
    ["/jsonrpc"] = {
        //多线程 JSON RPC 服务端函数,支持不定个数参数
        hello = function(name,value){

            ..winform.edit.print("hello 函数被 PHP 调用了,参数:",name,value);

            //第一个返回值为客户端返回值(result),第二个返回值为错误对象(error)
            if(!name) return null,-32602/*_JSONRPC_INVALID_PARAMS*/; 

            return "hello " + name;
        }
    }
}

process.php.code["/rpc-callback.php"] = /**<?php
ignore_user_abort(true); // 后台运行
set_time_limit(0); // 取消脚本运行时间的超时上限

//可选在参数中指定服务端 URL 不指定参数则设为 'http://'.$_SERVER['HTTP_HOST'].'/jsonrpc';
$aardio = new JsonRpcClient();

//用 aardio 作服务端因不需要频繁创建进程,所以速度更快。
for ($i=1; $i<=20; $i++)
{ 
    // PHP 调用 aardio  函数  
    $ret = $aardio->hello('param1',$i );
    /*
    建议使用 process.php.7.4 以上版本,
    不然 file_get_contents 偶尔失败会导致 JSON RPC 函数返回 null。
    PHP 7.x 或以上就没有问题,而且速度更快。
    */

    sleep(1);
} 
?>**/ 

//启动 PHP 页面,不获取页面输出,不阻塞界面线程
process.php.notify("/rpc-callback.php"); //开发环境打开控制台可查看错误信息

winform.show();
win.loopMessage();

Markdown 格式