PHP Codeigniter如何同时运行多个功能

时间:2018-09-04 17:24:41

标签: php codeigniter

我有2个函数,我们称它们为login和doSomething,目前,我是通过这种方式实现的,

$member=$this->login();
$this->doSomething($member);

//显示欢迎页面 当用户登录时,我想做一些事情,但是大约需要20秒或更长时间才能完成。在运行login()之后,有什么方法可以在单独执行doSomething()方法时立即显示欢迎页面。 doSomething()方法不会返回任何值,因此不会影响欢迎页面。

2 个答案:

答案 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(但要注意-接受的答案不好)。请注意,如果脚本的两个部分都依赖于会话,则会遇到阻塞问题。