首页 开发编程 正文

php怎么循环遍历 PHP能不能使用多线程

php怎么把接受到的数据循环的添加到数组?用于保存读取到的数据$contents=array(),//遍历数据表while($array=mysql_fetch_array($query)){$contents[]=$array;}print_r($contents);或者通过键名使用数组foreach($contentsas$val...

php怎么循环遍历,php怎么把接受到的数据循环的添加到数组?

遍历数据表,把相应的数据放到数组中即可例如:<

?php//定义一个数组,用于保存读取到的数据$contents = array();$query = mysql_query("select * from table")

;//遍历数据表while($array = mysql_fetch_array($query)){$contents[] = $array;

}print_r($contents)

;//然后循环数组,或者通过键名使用数组foreach($contents as $value){print_r($value);}echo $contents[0]['字段名称'];?>

Linux下PHP程序使用多线程?

引言

别的语言都在一窝蜂地搞编译,搞虚拟机,搞多线程,提高效率。我们整天敲 PHP 代码,除了 Nginx 调用 php-fpm 拉取 PHP 文件的解析外,对于多线程有多少了解?

请问,PHP 能不能使用多线程?如果能,怎么实现的?

本文就带你打开这个疑问。

学习时间

这个问题的答案是肯定的,PHP 可以使用多线程。我们借助于 pthreads 实现:

该项目提供了与基于Posix Threads的PHP兼容的多线程。

有啥亮点没?下面这些全是:

一个易于使用,快速学习的面向对象的PHP 7.2线程API执行所有预定义和用户声明的方法和函数,包括闭包。包括现成的同步无限的可能性...

需要一些扩展的基础的支持,PHP 7.2 及以上版本,ZTS Enabled ( Thread Safety ),Posix Threads Implementation。

还有一些注意事项:

pthreads是一个面向对象的API,它提供了PHP中多线程所需的所有工具。 PHP应用程序可以创建,读取,写入,执行并与线程,辅助对象和线程对象同步。 警告:pthreads扩展名不能在Web服务器环境中使用。 因此,PHP中的线程应仅保留给基于CLI的应用程序使用。

命令行应用脚本完全适用,这也与我们编写 Bash,Python等等类似。下面举一个例子:

然后执行一次:

再执行一次:

实际运用

上面的代码是个示例性质的应用,仅仅是为了展示多线程运行。下面来一段业务代码。

该类模拟一个url请求。因为网络问题,有可能失败,或者不确定返回时间,所以适合并行。接着我们使用该类进行多网络请求并发。为了减轻系统负荷,使用微秒延时。

$t = microtime(true);

$g = new AsyncWebRequest(sprintf("http://www.google.com/?q=%s", rand() * 10));

实例化之后,我们发起请求:

if ($g->start()) {

printf("Request took %f seconds to start ", microtime(true) $t);

while ( $g->isRunning() ) {

echo "."; usleep(100);

}

if ($g->join()) {

printf(" and %f seconds to finish receiving %d bytes\n", microtime(true) $t, strlen($g->data));

} else

printf(" and %f seconds to finish, request failed\n", microtime(true) $t);

}

其他方案

如果不用 pthreads 库提供的能力,该怎么写并行的多任务呢?其实 PHP 提供了一个 popen 函数,用于打开进程文件指针。

popen 返回一个和 fopen 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose 来关闭。此指针可以用于 fgets,fgetss 和 fwrite。 当模式为 'r',返回的文件指针等于命令的 STDOUT,当模式为 'w',返回的文件指针等于命令的 STDIN。

直接上代码:

for ($i=0; $i<10; $i++) { // 打开10个进程 for ($j=0; $j<10; $j++) { $pipe[$j] = popen('script2.php', 'w'); } // 等待完成 for ($j=0; $j<10; ++$j) { pclose($pipe[$j]); } }

大家看到了实现的方法与 pthreads 完全不同,这段代码仍然是阻塞运行,只不过同时打开10个进程,并行运行。

并行与多线程完全不同。不过,可视作一个简单的解决方案吧。

写在最后

经过上述两种实现方法,大家应该对于多线程,多进程,并行这些概念有一些认识了。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

php中的几种注释方法?

任何一门编程语言都有编程注释,注释的作用可以调试,可以描述代码的作用等等,说说那么PHP三种注释的方式

1, // 这是单行注释

2,# 这也是单行注释

3,/* */多行注释块

/*

这是多行注释块

它横跨了

多行

*/

PHP 代码中的注释不会被作为程序来读取和执行。它唯一的作用是供代码编辑者阅读。

php中update键有什么用?

update 函数,其功能是对数据库CURD四种基本操作里 U 的实现,其原理是通过对传入的数组(据判断,貌似是用“字段名”为键名,修改的值为 Value),通过对数组遍历,进行组合,进一步得到 SQL 语句(update),并予以执行。

$sep 是不同数据库字段名之间的分隔符,$key 是数据库字段名,$val 是修改的值。上面的代码通过多次循环之后,就会形成合乎 SQL 语法的 Update 数据修改语句

PHP中如何使用foreach循环遍历数组求681043中的最大值和最小值?

不需要使用 foreach 就能从数组 6、8、10、4、3 求出最大最小值,可以使用以下代码:

本文转载自互联网,如有侵权,联系删除