目次
回复内容:
ホームページ バックエンド開発 PHPチュートリアル 为什么 PHP 必须依赖 web 服务器?

为什么 PHP 必须依赖 web 服务器?

Jun 06, 2016 pm 08:37 PM
php

題主以爲:跟其它脚本语言比如 nodejs, python, ruby 不一样,PHP 必须依赖服务器存在,为什么它不把整个 http 的生命周期都放到 php 内部去管理,而非要依赖一个 web 服务器提供接口呢?

回复内容:

題主以爲:跟其它脚本语言比如 nodejs, python, ruby 不一样,PHP 必须依赖服务器存在,为什么它不把整个 http 的生命周期都放到 php 内部去管理,而非要依赖一个 web 服务器提供接口呢?

纯PHP实现的WebServer也有啊,例如workerman框架就自带了一个WebServer,整个http生命周期都是由PHP自己管理的,不依赖nginx apache php-fpm,并且数据库链接资源、全局对象等都可以永久保存并复用,性能确实提高不少。

另外PHP也自带了一个web服务器, php -S 启动,不过无法用于生产环境。

命令行下也可以直接运行 php file.php 运行脚本,也不依赖web服务器。

只是像PHP的web开发nginx+php-fpm 或者apache+php 这样的架构比较成熟了,所以大家都一直这样用,感觉PHP必须依赖Web服务器一样。当然如果要用PHP开发非http协议的应用,例如TCP长链接,还真得脱离现有的web架构,就得使用PHP的socket服务器框架。

PHP可以不依赖php-fpm、apache、nginx这些容器就可以独立运行。

传统PHP开发都是基于Web的,基本上都是HTTP协议,HTTP协议的解析处理都由WebServer独自承担了,所以开发者不会关心协议方面的事情。然而当我们需要基于非HTTP协议开发时,传统WebServer无法满足我们的需求,这时需要开发者实现协议解析部分。

PHP解释器现在内置了一个服务器,可以用 php -S 启动,虽说目前只能用于开发测试用。。

没有依赖呀,有命令行下php a.php就能执行一个php文件
在Web服务器中,php和python等脚本语言也没有本质区别
都是通过网关接口调用并返回的

1.因为当前的技术已经成熟了,所以没有必要去开发一个服务器去。
2.php语言中没有提供api来创建一个web server,php语言更专注于web内容处理。现行的php引擎在一次http请求结束后,就回收掉所有变量信息,说白了开发web过程中php不常驻内存。

你这命题就不对吧

以前的php clisapi 这个工具感觉应该是不是太被重视,以至很多人都不清楚甚至不知道,所以以为运行php代码必须借助浏览器离开浏览器php就不能运行,但现在的从php5.3开始更新这么频繁发生不少的变化,再有php一开始就与apache有了很好的结合很好的很方便处理了http交接转换,使人可以在php本身层面对处理request,response可以太方便的进行处理,不像python等语言要开发web要自己去实现与http交换数据的接口需要自己实现开发web而去开发一些web框架,php的框架都是应用框架。如果没有了mod_php php-fcgi php-fpm 这些东西,那想用php开发web 就跟python等语言一样了自己用php去开发实现能与http交接数据的web框架了。对一开始学习php的都是直笨主题开发、部署web是多么的方便与简单,很少会有提到背后已经实现了的技术知识,所以php才会让人感觉这么简单这么易学才会有这么多人用它。所以一些人才会忽略php是不是没有什么能脱离浏览器脱离web服务器可以单独运行的能力。

PHP那么火,就有一定的原因:他可以在各种环境下被支持,如果本身有了http,势必会限制他的发展。

php运行不是说一定要依赖容器,因为nginx/apache+php已经非常成熟了,性能又够用,web开发大家就都直接用这些容器了,稳定可靠,文档有多。

虽然PHP有ARC和GC,但还是存在内存泄露的。
用PHP扩展可以实现简单的WEB Server。比如这个用HttpEvent扩展实现的HTTP Server (http://php.net/manual/zh/eventhttp.construct.php)。

不过你可以测试一下,PHP官方提供的代码是存在内存泄漏的,经过十几万个请求后内存就跑满了

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles