我试图在页面发送到浏览器后调用一个函数,但我还没有找到办法。
我已尝试过register_shutdown_function和__destruct,但它不起作用。
这是我的结构:
register_shutdown_function('MyClass::Save');
MyClass::Initialize();
CreateAllOutput();
MyClass :: Save里面有一个睡眠(20)。
在CreateAllOutput()之后调用shutdown函数,但事实是浏览器上的加载栏只在Save函数执行完毕后等待20秒......我尝试使用非静态类和__destruct里面有一个睡眠(20),同样的事情发生了。
有没有办法让函数只在输出全部发送到浏览器后执行?
提前谢谢。
答案 0 :(得分:2)
通常:不。除了刷新所有输出然后调用它之外没有可能,但浏览器中的加载栏也不会完成。
我唯一能想到的是将iFrame放入页面以使用save函数调用PHP文件。或者你可以进行Ajax调用。
第三种可能是拨打exec()
( Documentation )。在使php文件可执行后,您可以使用该方法运行它。如文档中所述:
如果程序以此启动 功能,以便继续 在后台运行,输出 该程序必须重定向到一个 文件或其他输出流。失败 这样做会导致PHP挂起,直到 程序的执行结束。