我有2个函数,我们称它们为login和doSomething,目前,我是通过这种方式实现的,
$member=$this->login();
$this->doSomething($member);
//显示欢迎页面 当用户登录时,我想做一些事情,但是大约需要20秒或更长时间才能完成。在运行login()之后,有什么方法可以在单独执行doSomething()方法时立即显示欢迎页面。 doSomething()方法不会返回任何值,因此不会影响欢迎页面。
答案 0 :(得分:0)
请尝试以下操作。
ob_start();
$member = $this->login();
ob_end_flush();
ob_flush();
flush();
$this->doSomething($member);
如果您不想在登录后打印任何内容,可以使用:
ob_start();
$this->doSomething($member);
ob_end_clean();
还可以使用前端站点登录页面上的Ajax(加载后),您可以开始处理 $ this-> doSomething($ member); 在后端的另一个ajax调用中无提示。
还有其他方法可以实现线程化,例如行为伪线程。 但这是最简单的场景之一:)
您也可以检查WorkerThreads。 其实现示例文档可在网上找到。
答案 1 :(得分:0)
如果真的,确实想要并行运行它,那么您需要在一个独立的过程中运行它。这意味着您将在不同的范围内运行它,因此虽然您调用的代码可能包含For Each ws In Worksheets
If ws.Name <> "Combined_Athlete" then
LastRow = ws.UsedRange.Rows.Count
For j = 6 To LastRow
ws.Rows(j).Copy Sheets("Combined_Athlete").Range("A" & Sheets("Combined_Athlete").Range("A" & Rows.Count).End(xlUp).Row + 1)
Next j
End if
Next ws
,但“ this”将不是此“ this”。
假设有可能,那么您的问题是一个duplicate of this one(但要注意-接受的答案不好)。请注意,如果脚本的两个部分都依赖于会话,则会遇到阻塞问题。