执行PHP
文件 功能test_exec(T *测试。T){
初始化()
引擎=上下文{
输出:Stdout
操作系统,
}
错误:= engine.requeststartup(CTX)
如果错误!= { { {
Println(ERR)的
性能。
}
推迟engine.requestshutdown(CTX)
操作系统()
如果错误!= { { {
Println(ERR)的性能。
}
}
内容 / /的index.php是TMP
< PHP
回音();
eval
函数,返回值
功能test_eval(T *测试。T){
初始化()
=引擎。上下文{ }
错误:= engine.requeststartup(CTX)
如果错误!= { { {
Println(ERR)的性能。
}
推迟engine.requestshutdown(CTX)
瓦尔,错误:= CTX。eval(return'hello;)
如果错误!= { { {
Println(ERR)的性能。
}
推迟engine.destroyvalue(Val)
如果engine.tostring(Val)!=hello{
T.FailNow()
}
}
返回值的生命周期的所有权是朗的
程序,所以我们负责destroyvalue
设置全局变量以传递引用
功能test_argument(T *测试。T){
初始化()
=引擎。上下文{ }
错误:= engine.requeststartup(CTX)
如果错误!= { { {
Println(ERR)的性能。
}
推迟engine.requestshutdown(CTX)
绑定(问候)
如果错误!= { { {
Println(ERR)的性能。
}
瓦尔,错误:= eval(CTX。返回的问候;)
如果错误!= { { {
Println(ERR)的性能。
}
推迟engine.destroyvalue(Val)
如果engine.tostring(Val)!=hello{
T.FailNow()
}
}
传入的
参数的生命周期由PHP
控制,
内存将在请求
关闭时释放。
php回调郎
型greetingprovider struct {
问候字符串
}
Func(供应商greetingprovider)getgreeting字符串(){
返回provider.greeting
}
功能newgreetingprovider(args { } { } { }接口
界面){
返回greetingprovider {
问候:args { 0 }。(字符串),
}
}
功能test_callback(T *测试。T){
初始化()
=引擎。上下文{ }
错误:= engine.requeststartup(CTX)
如果错误!= { { {
Println(ERR)的性能。
}
推迟engine.requestshutdown(CTX)
错误=引擎。定义(greetingprovider
如果错误!= { { {
Println(ERR)的性能。
}
瓦尔,错误:= eval(` CTX。
greetingprovider美元=新GreetingProvider(你好);
Return $greetingProvider->GetGreeting ();
如果错误!= { { {
Println(ERR)的性能。
}
推迟engine.destroyvalue(Val)
如果engine.tostring(Val)!=hello{
T.FailNow()
}
}
PHP错误日志
功能test_log(T *测试。T){
engine.php_ini_path_override = / / tmp PHP INI
初始化()
引擎=上下文{
日志:Stderr操作系统,
}
错误:= engine.requeststartup(CTX)
如果错误!= { { {
Println(ERR)的性能。
}
推迟engine.requestshutdown(CTX)
_,呃= CTX,eval(error_log(你好,4);trigger_error('sent从郎,e_user_error);)
如果错误!= { { {
Println(ERR)的性能。
}
}
/ /甲氧苄啶的含量
error_reporting = e_all
error_log = / / PHP错误日志差。
错误将出口 / / tmp PHP错误。日志,error_log直接调用将输出
复制到stderr同时
HTTP
输入和输出
功能test_http(T *测试。T){
初始化()
录音:= httptest.newrecorder()
引擎=上下文{
要求:httptest.newrequest(
responsewriter:录音机,
}
错误:= engine.requeststartup(CTX)
如果错误!= { { {
Println(ERR)的性能。
}
推迟engine.requestshutdown(CTX)
_,呃= CTX。eval(回波($ _server { 'request_uri});)
如果错误!= { { {
Println(ERR)的性能。
}
体,错误:= ioutil.readall(recorder.result()。体)
如果错误!= { { {
Println(ERR)的性能。
}
如果字符串(体)!{{
T.FailNow()
}
}
所有PHP超级全局变量都初始化为传入的请求值,包括
_server美元
_get美元
_post美元
_file美元
_cookie美元
_env美元
回声的内容,HTTP代码和HTTP标头将写回输入responsewriter
fastcgi_finish_request
一、PHP-FPM最常用的功能是fastcgi_finish_request,用来在PHP做异步的。这种特殊的全局函数必须
支持 功能test_fastcgi_finish_reqeust(T *测试。T){
初始化()
缓冲区:=字节。缓冲区{ }
引擎=上下文{
输出:缓冲区,
}
错误:= engine.requeststartup(CTX)
如果错误!= { { {
Println(ERR)的性能。
}
推迟engine.requestshutdown(CTX)
CTX。eval(ob_start();echo(你好');)
如果缓冲区字符串()!= {
T.FailNow()
}
CTX。eval(fastcgi_finish_request();)
如果缓冲区字符串()!=hello{
T.FailNow()
}
}
实际效果是将输出提前resposnewriter并让对方知道结果。在当前
进程的执行没有
影响,但它只影响输出。
谢谢你的阅读。我希望你能帮助你,谢谢你对这个站的支持。