2009-12-15 63 views
1

我需要同时运行多个函数。我已经成功地在C#中实现了创建ElapsedEventHandler并在计时器结束时执行它。通过这种方式,我可以同时运行多个功能(代表)。我怎样才能使用PHP做同样的事情?在php中运行多个函数

回答

4

更新

PHP现在支持多任务处理。请参阅pthreads API。


PHP没有多线程。所以你必须通过CLI产生另一个php进程并运行该脚本。

结账这些问题的详细信息:

+0

这是基于您想要同时运行这些功能的假设(同时)。 – Anurag 2009-12-15 10:43:15

+2

这是一个公平的假设,因为问题明确说明了这一点。 – Quentin 2009-12-15 10:44:49

+0

所以你在说PHP没有多线程并且链接到一个答案,它说的字体是30,在PHP中可以使用多线程。 – 2016-01-19 18:30:56

-2

这是你可以模仿的是:

function runFuncs() 
    { 
    function1(); // run funciton1 
    function2(); // run funciton2 
    function3(); // run funciton3 
    function4(); // run funciton4 
    function5(); // run funciton5 
    } 

当您运行runFuncs();它运行它内部的所有功能。

+0

我不能做到这一点,bcoz我不最初知道哪些功能将运行。这将取决于用户。当我在C#中创建相同的程序时,我使用了以下代码: myTimer.Elapsed + = new ElapsedEventHandler(function_name); 由此我可以添加任何功能动态... – 5lackp1x3l0x17 2009-12-15 10:30:40

+0

我相信他的意思是计时器的东西。 – 2009-12-15 10:42:48

+0

@Sahil:你可以使用'register_tick_function()'并检查正确的时间戳来执行。 – 2009-12-15 10:44:05

-1

只需创建一个数组,在其中放置要运行的所有函数,然后循环数组并运行函数。

foreach($functions as $func) 
{ 
    $func(); 
} 

是你想要做什么?

+0

哦,上帝..你能做到吗?哇!我会尝试一下并回到你身边。 – 5lackp1x3l0x17 2009-12-15 10:39:11

+0

我突然意识到,这是不可能的,因为在我的代码中,函数必须睡眠,让其他函数执行。 – 5lackp1x3l0x17 2009-12-15 10:45:13

+0

这不是在同一时间顺序运行函数。 – Quentin 2009-12-15 10:45:20

0

像这样的东西应该工作:

function foo() { 
    echo "foo\n"; 
} 

function bar() { 
    echo "bar\n"; 
} 

class multifunc { 
public $functions = array(); 
function execute() { 
    foreach ($this->functions as $function) $function(); 
} 
} 

$test = new multifunc(); 
$test->functions[] = 'foo'; 
$test->functions[] = 'bar'; 
$test->execute();