如何使用PHP/sql并行运行两个sql查询?

如何使用PHP/sql并行运行两个sql查询?,php,sql,postgresql,Php,Sql,Postgresql,是否可以启动两个sql查询以使它们同时运行 在一个php文件中,我对Postgresql数据库执行两个查询。使用前两个查询返回的值,然后执行第三个查询 function one(){ $query = pg_query($con, $sql); $a = pg_fetch_result($query, 0, 0); return $a; } function two(){ $query =

是否可以启动两个sql查询以使它们同时运行

在一个php文件中,我对
Postgresql
数据库执行两个查询。使用前两个查询返回的值,然后执行第三个查询

function one(){ 
   $query = pg_query($con, $sql);                               
   $a = pg_fetch_result($query, 0, 0);  
   return $a;
}
function two(){        
   $query = pg_query($con, $sql);                            
   $b = pg_fetch_result($query, 0, 0);  
   return $b;
}

function three($a, $b){ 
   //$a + $b used to construct query $sql
   $query = pg_query($con, $sql);                               
   $c = pg_fetch_result($query, 0, 0); 
   return $c;
}
是否可以同时运行函数
1
2
?我考虑的另一种方法是使
a
b
全局变量,并最初将它们设置为
null
。然后,函数
one
two
不返回任何值,而是在完成后设置
a
b
的值。然后我不断检查
a
b
是否为空,如果为空,则调用函数
three

搜索此主题时,我阅读了有关
pcntl
的内容,但我不清楚这是否是执行此类型计算的最佳方式。
pcntl
默认情况下未安装在我的网络托管服务(WebPosition)上


另一种方法可能是使用它,使我能够使用不同的参数执行相同的查询,这可能比我原来的方法快。

是的,您可以使用
线程同时运行两个查询

但如果您不知道如何正确处理它们,我建议您不要使用
线程
,因为它会导致
争用
情况


我的建议是使用直接调用两个函数并将它们存储在变量中,然后将其传递给第三个函数。它不会影响页面性能

我不太确定这是否可以通过纯粹使用PHP来实现

我将使用javascript实现这样的效果。 假设我有a.php和b.php。我将创建一个html文件:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
   $.ajax({url:'a.php'});
   $.ajax({url:'b.php'});
</script>

$.ajax({url:'a.php'});
$.ajax({url:'b.php'});

这实际上不是多线程。这就像两个人几乎同时打开两个不同的网页。

在函数中创建一个query1query2,将query1和query2的结果存储在单独的变量中,并将这些变量传递给第三个查询所在的函数,并执行必要的操作

function one()
{
  $query1="Your query here";
  $query2="Your second query here";
  $result=array_mergre($query1,$query2);
  return $result;
 }
将$result传递给第二个函数

 function two($result)
  {

    //Your actio ngoes here;
      }

如果创建两个不同的连接,则可以使用异步查询

有关更多信息,请参阅PHP手册中的pg_send_query()、pg_get_result()和pg_cancel_query()


请注意,每个后端都是单线程的,因此每个查询必须有一个连接。

线程很可能是答案


也许你应该看看Gearman for linux或PHP的mysqli_multi_queryA数据库,它从来没有同时进行过两次查询。您可能希望查看事务。除此之外,PHP本身也只能同时执行一行代码,因此不能与PHP完全并行地执行两个函数。谢谢您的建议。我刚刚更新了我的函数描述,使其更清晰。我不确定-这种方法会比我已经做的更快吗?它如何比我当前的过程更快?我考虑过使用Javascript,但我认为从服务器到网页来回传输数据的时间开销可能不值得。我会测试它,只是为了确认。