如何使用PHP/sql并行运行两个sql查询?
是否可以启动两个sql查询以使它们同时运行 在一个php文件中,我对如何使用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 =
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'});
这实际上不是多线程。这就像两个人几乎同时打开两个不同的网页。在函数中创建一个query1和query2,将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,但我认为从服务器到网页来回传输数据的时间开销可能不值得。我会测试它,只是为了确认。