2025-05-31 07:05:48

大家好,今天小编关注到一个比较有意思的话题,就是关于linux php的问题,于是小编就整理了4个相关介绍linux php的解答,让我们一起看看吧。

linux系统中php怎么连接mysql?

PHP连接my SQL的方式跟linux操作系统没有必然的关系,他是完全独立于操作系统的。在现在版本的PHP中,你可以安装mySQLi扩展或者pdo扩展。

linux php,linux PHP操作

使用MySQL扩展连接,

$cn=new mysqli($host,$user,$password,$dbName);

host表示服务器的IP地址,$user钥匙连接服务器的用户名,$password表示用户的密码,$dbName表示要连接的数据库。

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 :_)

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

linux运行php会比windows好很多不?

个人感觉,Linux的性能绝对是一流的,相比于windows而言,而且,Linux也是更加稳定,一般而言,只要应用没问题,服务器硬件没问题,Linux系统本身是相当稳定的,一般都不会出现什么问题的!

谢邀!

目前没有任何证据证明PHP在获得同等资源情况下,linux平台会运行的更快(响应延迟更低、支持的并发更高)!

但通常情况下,因为linux可以基于需要安装组件(甚至连IDE都可以不要),因此默认服务占用的资源更少,在同等配置的情况下,可分配给应用程序的资源自然更多!

因此可以得出以下结论,在合理配置情况下,同等硬件资源的条件下PHP运行在linux上相对于windows上可以提供更为优秀的性能。

linux可以精简内核和服务,所以留给php的资源相对较多,在1c1g配置下,php可以利用相对windows更多的资源,但是在双路几十核几百g内存下只跑php且配置参数和加载模块一样的情况下几乎没有差别,微软对于php也是投了钱的,所以平台不是制约性能的关键,而是在于运维人员有没有合理优化和配置。

通俗简洁的说明一下。

单讲性能毫无意义,你以为不用Windows是考虑性能?重点在于稳定性。

通常PHP会有多个进程来处理请求。

Linux一个php-fpm进程挂了,不影响其他作业。

Windows挂了你试试,分分钟让你知道服务器宕机是如此的容易

Linux下怎么配置PHP环境变量?

基于Linux系统环境的PHP一键安装程序xampp,强烈推荐。

该程序集成了mysql,phpmyadmin,php,Tomcat组件,可根据需要自由开启服务,甚至可以在Linux图形环境下安装可视化的组件,跟Windows里面差不多。

访问xampp官网有下载,安装和调试的手册。

到此,以上就是小编对于linux php的问题就介绍到这了,希望介绍关于linux php的4点解答对大家有用。

上一篇:php 格式,php格式转换mp4

下一篇:php linux,php linux部署

相关阅读