0

我正在用 php 编写一种测试系统来测试我的数据库记录。我为每个测试用例分离了 php 文件。一个(主)文件以 URL 字符串的形式给出了测试编号和该测试的输入参数。该文件确定测试编号并根据测试编号调用适当的测试用例。现在我有一堆要传递的 URL 字符串,我希望将它们传递给那个(主)文件,并且每个测试用例在接收到它的参数后开始独立工作。

4

3 回答 3

1

PHP 是一个单线程实体,目前不存在多线程。但是,当人们通常问我有关多线程的问题时,您可以做一些事情来获得类似(但不相同)的用例结果。同样,PHP 中没有多线程,但下面的一些内容可能会帮助您进一步创建具有符合您要求的特征的东西。

  • libevent:您可以使用它为 PHP 创建一个事件循环,从而减少阻塞问题。见http://www.php.net/manual/en/ref.libevent.php
  • curl_multi:另一个有用的库,可以触发 get/post 到其他服务。
  • 过程控制:我自己没有使用过,但如果过程控制是您问题的一个方面,它可能是有价值的。http://uk.php.net/pcntl
  • Gearman:现在这个我已经用过了,非常好。它允许您创建工作人员并将进程分拆到队列中。您可能还想查看 rabbit-php 或 ZeroMQ。
于 2012-05-02T12:32:35.310 回答
0

PHP 不是多线程的,它是单线程的。您不能在 PHP 中启动新线程。您最好的选择是file_get_contents(或 cURL)到另一个 PHP 脚本以“模仿”线程。真正的多线程在 PHP 中不可用。

您还可以在http://phplens.com/phpeverywhere/?q=node/view/254上查看 John 的帖子。

于 2012-05-02T12:13:08.300 回答
-1

您可以做的是使用cURL将请求发送回服务器。将处理请求并返回结果。

一个例子是:

$c = curl_init("http://servername/".$script_name.$params);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($c);
curl_close($c);

虽然这不被认为是多线程,但它可以用来实现您的目标。

于 2012-05-02T11:47:46.413 回答