只能運行在php,它為什麼能運行 它為什麼不能運行

本文目錄一覽:

php swoole 只能運行在php-cli 環境嗎

一直想寫點Swoole的東西,畢竟它重新定義了php,卻一直不知道怎麼下手寫Swoole涉及的知識點非常多,互為表裡,每次想寫都發現根本理不出一個頭緒Swoole是一個php的擴展,它的核心目的就是解決php在實現server服務中可能遇到的一系列問題,這些問題用源生的php往往並不能很高效(執行效率)的解決,一般也不會使用php來解決,所以會有說swolle重新定義的php的說法。

其實swoole也提供了一個框架,swoole framework是基於swoole extension設計的一個框架,要用好這個框架,還是要先了解swoole extension。

擴展的英文名稱是Extension,php擴展是用C語言作為開發語言,基於Zend引擎提供的API,編譯成的一個動態庫。

如果曾經做過類似動態庫調用開發的童鞋可能會更好理解一些,例如Android中的NDK開發在php的配置文件中配置好extension的屬性後,就可以引用這個動態庫了。

也就是說,swoole本身是用C語言編寫的,它可以讓php獲得一些額外的function。

然後是運行方式,swoole的許多功能都只能運行在cli模式下,而cli模式往往是很多剛接觸swoole的phper遇到的第一個問題。

有時候其實只是需要轉變一下思路

我們現在整理一下最常見的php代碼執行方式:

安裝apache、php

配置apache對那個目錄進行php解析

用瀏覽器訪問那個目錄的php文件

更多的細節這裡就不提了,畢竟我相信每個phper對這個都是很熟悉的。

但這裡就開始出現了第一個問題,我們知道,php是一個腳本語言,腳本語言的核心特點在於不用編譯,隨時執行,而執行腳本的工具就是解析器,而php的解析器就是zend引擎。

嚴格來說,zend並不是唯一的選擇,不過,zend是最官方的。另外,Zend Studio和Zend Engine不是同一個東西,本文中的Zend全部指Zend Engine。

換個角度講,只要有解析器,寫好的php腳本就是可以執行的,而zend引擎與apache之間並沒有絕對的關係實際上,apahce是調用了zend對php腳本進行執行,然後將執行結果輸出給了瀏覽器所以所謂cli模式(CommandLine,命令行模式),其實就是在命令行下直接調用zend引擎對php腳本進行解析並執行,並獲得程序輸出結果的php腳本執行方式。

其實php也可以作為shell腳本來使用哦,就像bash shell一樣既然問題講清楚了,在一個系統中具體怎麼操作呢?

本文以CentOS 7.5作為系統環境,swoole是針對linux系統開發的,windows下並不適用。學習swoole的一個前題是懂得基本的linux系統使用。

當安裝好php的時候,找到php的安裝目錄,如果是默認安裝的話,可以試試whereis命令# 某種簡單的方法

whereis php

/usr/local/bin/php;

locate whereis find這些命令都可以試試,目的是找到php然後我們來寫一個最經典的php腳本:

?php

//vi hello_cli.php

echo ‘Hello PHP Cli’;

編寫純php腳本時,php標籤不要封口

然後我們在shell里執行它:

/usr/local/bin/php hello_cli.php

Hello PHP Cli

這段代碼中的第一個php,是一個可執行文件,它接受一個php腳本文件作為輸入參數,並解析執行這個php腳本文件(通過zend)。

沒有錯,第一個cli模式下的php程序就被你執行成功了!

默認情況下,php都會被安裝在了$PATH的目錄下,那就可以直接省略路徑前綴了,下文中調用php的時候,全都省略了路徑前綴。

因為swoole是pecl的項目,所以使用pecl安裝是最簡單的方法,強烈推薦第一次接觸的童鞋先使用pecl安裝,在熟悉了swoole之後,再考慮使用編譯安裝的方式以獲取更多進階功能。

pecl這個工具基本都會被安裝在與php相同的目錄下(往往也都是$PATH目錄)pecl install swoole

執行以下命令查看是否安裝成功:

php -m | grep swoole

swoole

如果正確的輸出了swoole,那麼恭喜你,這次安裝很成功另一個常見的比較麻煩的問題是,有些童鞋的電腦里安裝了多個php,而安裝的時候沒有正確的安裝到預期的php的擴展目錄中,就會導致無法正常工作,解決方案就是弄清楚各個php安裝目錄及配置關係,選擇正確的目錄進行安裝。

其實本文還沒正式開始介紹swoole,都是在學習swoole之前的準備工作,swoole的上手門檻比一般的php應用要高的多,如果沒有網絡開發和操作系統方面的一些知識,學習它並不是一件容易的事情,學習曲線很陡峭。

這句話我在群里說了無數次

很多新手會詬病swoole的手冊寫的太模糊,其實是前置知識不足,而手冊也給出了需要的前置知識列表,以下引用至官網的手冊-學習swoole需要哪些知識?

多進程/多線程

了解Linux操作系統進程和線程的概念

了解Linux進程/線程切換調度的基本知識

了解進程間通信的基本知識,如管道、UnixSocket、消息隊列、共享內存socket

了解SOCKET的基本操作如accept/connect、send/recv、close、listen、bind了解SOCKET的接收緩存區、發送緩存區、阻塞/非阻塞、超時等概念IO復用

了解select/poll/epoll

了解基於select/epoll實現的事件循環,Reactor模型了解可讀事件、可寫事件

TCP/IP網絡協議

了解TCP/IP協議

了解TCP、UDP傳輸協議

調試工具

使用gdb調試Linux程序

使用strace跟蹤進程的系統調用

使用tcpdump跟蹤網絡通信過程

其他Linux系統工具,如ps、lsof、top、vmstat、netstat、sar、ss等學習並理解一個新事務並不是一個容易的事情,特別對於swoole這種具備一定顛覆性的工具,要有耐心和實踐。

淡定的把手冊看完,遇到不理解的名詞學會使用搜索引擎學習,swoole的手冊其實是個大寶庫,網絡開發常見的問題其實裡邊都涉及到了。

iis fastcgi只能運行php嗎

FastCGI模塊映射的方式配置的,當然還有ISAPI處理程序映射,不過ISAPI的方式在PHP5.5之後就沒有了,FastCGI是推薦的方式,效率相對比較高也穩定。

系統我用的是自己的筆記本,Windows 8.1,IIS是8的,當然Windows Server也是一樣的,照着弄就行。

同一個服務器的空間,別人的可以運行ASP,我的卻不可以,只能運行PHP,怎麼辦?

應該是ASP文件出現問題,或者是內置的ASA的問題。

一般情況下,是不可能同一服務器的空間一個能運行一個不能運行的~

實在不行~Hi下我~相信我的話,可以讓我幫你看一下~~

服務器中只需要運行PHP網站程序,可以不安裝SQL Server 嗎?

不影響。

asp或php程序完全可以不用sql server。sql server是用來存儲數據,如果不用sql server儲存數據,用戶可以把數據存儲在其他類型的數據庫或者數據文件中,如oracle,mysql,access,excel,甚至是存儲為文本文件中。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/205816.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-07 17:47
下一篇 2024-12-07 17:47

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台服務器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24
  • PHP導出Excel文件

    一、PHP導出Excel文件列寬調整 當我們使用PHP導出Excel文件時,有時需要調整單元格的列寬。可以使用PHPExcel類庫中的setWidth方法來設置單元格的列寬。下面是…

    編程 2025-04-24
  • php擴展庫初探

    一、什麼是php擴展庫? PHP擴展庫(PHP extension)是一些用C語言編寫的動態鏈接庫,用於擴展PHP的功能。PHP擴展庫使得PHP可以與各種數據庫系統相連、SMTP、…

    編程 2025-04-23

發表回復

登錄後才能評論