⑴ php如何接收動態數據保存並實時顯示到網頁上
頭部加上超時控制,但對於很多伺服器無效,因為伺服器輸出超時很多在伺服器控制,所以建議用cmd腳本方式運行此程序:
<?php
set_time_limit(0); //禁用腳本超時
//Createthesocketandconnect
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
$connection=socket_connect($socket,'116。236。128。220',14580);
//Writesometestdatatooursocket
if(!socket_write($socket,"userNoCallpass-1verstest1.0filterb/B* "))
{
echo("<p>Writefailed</p>");
}
if(!file_exists('socket_log.html')){
file_put_contents('socket_log.html','<script>
varxx=setInterval(function(){ //每5秒刷新一次頁面
window.location.reload();
},5000);
</script>');
}
//Readanyresponsefromthesocket
while($buffer=socket_read($socket,64,PHP_NORMAL_READ))
{
echojson_encode($buffer);//轉換為json數據輸出
//記入文件
file_put_contents('socket_log.html',json_encode($buffer),FILE_APPEND);
}
echo("<p>DoneReadingfromSocket</p>");
使用方法:用命令行方式運行此腳本
phpscript.php
腳本會一直運行到接收數據結束,並持續將收到的數據寫入socket_log.html文件。
在瀏覽器打開socket_log.html頁面,此頁面會自動每5秒刷新一次,來顯示最新的數據。
確保程序有許可權創建及寫入socket_log.html文件
⑵ 如何用php filter
filter是一個function家庭,是一個統稱,和sort一樣。具體用法可以查看 PHP手冊裡面的filter函數族裡邊兒的 filter_*你試試看這樣行不,如果還有不明白的咱倆可以一起在後盾人看看視頻找找答案呀,多看幾遍不就會了
⑶ PHP流(Stream)的概述與使用詳解
在現代 PHP 特性中,流或許是最出色但使用率最低的。雖然 PHP 4.3 就引入了流,但是很多開發者並不知道流的存在,因為人們很少提及流,而且流的文檔也很匱乏。PHP 官方文檔對流的解釋如下:
可能看完這段解釋後還是雲里霧里,我們簡化一下,流的作用是在出發地和目的地之間傳輸數據。出發地和目的地可以是文件、命令行進程、網路連接、ZIP 或 TAR 壓縮文件、臨時內存、標准輸入或輸出,或者是通過 PHP 流封裝協議實現的任何其他資源。
如果你讀寫過文件,就用過流;如果你從 php://stdin 讀取過數據,或者把輸入寫入 php://stdout ,也用過流。流為 PHP 的很多 IO 函數提供了底層實現,如 file_get_contents、fopn、fread 和 fwrite 等。PHP 的流函數提供了不同資源的統一介面。
我們可以把流比作管道,把水(資源數據)從一個地方引到另一個地方。在水從出發地到目的地的過程中,我們可以過濾水,可以改變水質,可以添加水,也可以排出水。
流式數據的種類各異,每種類型需要獨特的協議,以便讀寫數據,我們稱這些協議為 流封裝協議 。例如,我們可以讀寫文件系統,可以通過 HTTP、HTTPS 或 SSH 與遠程 Web 伺服器通信,還可以打開並讀寫 ZIP、RAR 或 PHAR 壓縮文件。這些通信方式都包含下述相同的過程:
1.開始通信
2.讀取數據
3.寫入數據
4.結束通信
雖然過程是一樣的,但是讀寫文件系統中文件的方式與收發 HTTP 消息的方式有所不同,流封裝協議的作用是使用通用的介面封裝這種差異。
每個流都有一個協議和一個目標。指定協議和目標的方法是使用流標識符:<scheme>://<target>,其中 <scheme> 是流的封裝協議,<target> 是流的數據源。
http://流封裝協議
下面使用 HTTP 流封裝協議創建了一個與 Flicker API 通信的 PHP 流:
不要以為這是普通的網頁 URL,file_get_contents() 函數的字元串參數其實是一個流標識符。http 協議會讓 PHP 使用 HTTP 流封裝協議,在這個參數中,http 之後是流的目標。
我們通常使用 file_get_contents()、fopen()、fwrite() 和 fclose() 等函數讀寫文件系統,因為 PHP 默認使用的流封裝協議是 file://,所以我們很少認為這些函數使用的是 PHP 流。下面的示例演示了使用 file:// 流封裝協議創建一個讀寫 /etc/hosts 文件的流:
我們通常會省略掉 file:// 協議,因為這是 PHP 使用的默認值。
php://流封裝協議
編寫命令行腳本的 PHP 開發者會感激 php:// 流封裝協議,這個流封裝協議的作用是與 PHP 腳本的標准輸入、標准輸出和標准錯誤文件描述符通信。我們可以使用 PHP 提供的文件系統函數打開、讀取或寫入下面四個流:
1. php://stdin :這是個只讀 PHP 流,其中的數據來自標准輸入。PHP 腳本可以使用這個流接收命令行傳入腳本的信息;
2. php://stdout :把數據寫入當前的輸出緩沖區,這個流只能寫,無法讀或定址;
3. php://memory :從系統內存中讀取數據,或者把數據寫入系統內存。缺點是系統內存有限,所有使用 php://temp 更安全;
4. php://temp :和 php://memory 類似,不過,沒有可用內存時,PHP 會把數據寫入這個臨時文件。
其他流封裝協議
PHP 和 PHP 擴展還提供了很多其他流封裝協議,例如,與 ZIP 和 TAR 壓縮文件、FTP 伺服器、數據壓縮庫、Amazon API、Dropbox API 等通信的流封裝協議。需要注意的是,PHP 中的 fopen()、fgets()、fputs()、feof() 以及 fclose() 等函數不僅可以用來處理文件系統中的文件,還可以在所有支持這些函數的流封裝協議中使用。
自定義流封裝協議
我們還可以自己編寫 PHP 流封裝協議。PHP 提供了一個示例 StreamWrapper 類,演示如何編寫自定義的流封裝協議,支持部分或全部 PHP 文件系統函數。關於如何編寫,具體請參考以下文檔:
http://php.net/manual/zh/class.streamwrapper.php
http://php.net/manual/zh/stream.streamwrapper.example-1.php
有些 PHP 流能夠接受一系列可選的參數,這些參數叫流上下文,用於定製流的行為。不同的流封裝協議使用的流上下文有所不同,流上下文使用 stream_context_create() 函數創建,這個函數返回的上下文對象可以傳入大多數文件系統函數。
例如,你知道可以使用 file_get_contents() 發送 HTTP POST 請求嗎?使用一個流上下文對象即可實現:
流過濾器
目前為止我們討論了如何打開流,讀取流中的數據,以及把數據寫入流。不過,PHP 流真正強大的地方在於過濾、轉換、添加或刪除流中傳輸的數據,例如,我們可以打開一個流處理 Markdown 文件,在把文件內容讀入內存的過程中自動將其轉化為 HTML。
運行該腳本,輸出的都是大寫字母:
我們還可以使用 php://filter 流封裝協議把過濾器附加到流上,不過,使用這種方式之前必須先打開 PHP 流:
這個方式實現效果和 stream_filter_append() 函數一樣,但是相比之下更為繁瑣。不過,PHP 的某些文件系統函數在調用後無法附加過濾器,例如 file() 和 fpassthru(),使用這些函數時只能使用 php://filter 流封裝協議附加流過濾器。
自定義流過濾器
我們還可以編寫自定義的流過濾器。其實,大多數情況下都要使用自定義的流過濾器,自定義的流過濾器是個 PHP 類,繼承內置的 php_user_filter 類( http://php.net/manual/zh/class.php-user-filter.php ),且必須實現 filter()、onCreate() 和 onClose() 方法,最後,必須使用 stream_filter_register() 函數注冊自定義的流過濾器。
然後,我們必須使用 stream_filter_register() 函數注冊這個自定義的 DirtyWordsFilter 流過濾器:
第一個參數用於標識這個自定義過濾器的過濾器名,第二個參數是這個自定義過濾器的類名。接下來就可以使用這個自定義的流過濾器了:
修改 test.txt 內容如下:
運行上面的自定義過濾器腳本,結果如下:
stream_bucket_append函數:為隊列添加數據
stream_bucket_make_writeable函數:從操作的隊列中返回一個數據對象
stream_bucket_new函數:為當前隊列創建一個新的數據
stream_bucket_prepend函數:預備數據到隊列
stream_context_create函數:創建數據流上下文
stream_context_get_default函數:獲取默認的數據流上下文
stream_context_get_options函數:獲取數據流的設置
stream_context_set_option函數:對數據流、數據包或者上下文進行設置
stream_context_set_params函數:為數據流、數據包或者上下文設置參數
stream__to_stream函數:在數據流之間進行復制操作
stream_filter_append函數:為數據流添加過濾器
stream_filter_prepend函數:為數據流預備添加過濾器
stream_filter_register函數:注冊一個數據流的過濾器並作為PHP類執行
stream_filter_remove函數:從一個數據流中移除過濾器
stream_get_contents函數:讀取數據流中的剩餘數據到字元串
stream_get_filters函數:返回已經注冊的數據流過濾器列表
stream_get_line函數:按照給定的定界符從數據流資源中獲取行
stream_get_meta_data函數:從封裝協議文件指針中獲取報頭/元數據
stream_get_transports函數:返回注冊的Socket傳輸列表
stream_get_wrappers函數:返回注冊的數據流列表
stream_register_wrapper函數:注冊一個用PHP類實現的URL封裝協議
stream_select函數:接收數據流數組並等待它們狀態的改變
stream_set_blocking函數:將一個數據流設置為堵塞或者非堵塞狀態
stream_set_timeout函數:對數據流進行超時設置
stream_set_write_buffer函數:為數據流設置緩沖區
stream_socket_accept函數:接受由函數stream_ socket_server()創建的Socket連接
stream_socket_client函數:打開網路或者UNIX主機的Socket連接
stream_socket_enable_crypto函數:為一個已經連接的Socket打開或者關閉數據加密
stream_socket_get_name函數:獲取本地或者網路Socket的名稱
stream_socket_pair函數:創建兩個無區別的Socket數據流連接
stream_socket_recvfrom函數:從Socket獲取數據,不管其連接與否
stream_socket_sendto函數:向Socket發送數據,不管其連接與否
stream_socket_server函數:創建一個網路或者UNIX Socket服務端
stream_wrapper_restore函數:恢復一個事先注銷的數據包
stream_wrapper_unregister函數:注銷一個URL地址包
整合資料
本文整合於以下兩篇文章
https://blog.csdn.net/qq756684177/article/details/81518647
https://xueyuanjun.com/post/7459.html
⑷ php5.6.25 php_win32api.dll擴展類
一、准備工作 上pkgs/download/nginx-1/download/nginx-1206/get/php-5.4.14.tar.gz/from/this/mirror // 解壓 [root@pangou php]# tar -zxvf php-5.4.14.tar.gz 安裝依賴包 [root@pangou php]# yum install -y libxml2-devel libjpeg-devel libpng-devel freetype-devel openssl-devel libcurl-devel libmcrypt-devel 編譯php [root@pangou php]# ls php-5.4.14 php-5.4.14.tar.gz [root@pangou php]# cd php-5.4.14 [root@pangou php-5.4.14]# pwd /root/Downloads/php/php-5.4.14 [root@pangou php-5.4.14]# ls acinclude.m4 CREDITS ltmain.sh NEWS README.MAILINGLIST_RULES README.TESTING stamp-h.in aclocal.m4 ext main pear README.namespaces README.TESTING2 stub.c build EXTENSIONS makedist php5.spec.in README.NEW-OUTPUT-API README.UNIX-BUILD-SYSTEM svnclean.bat buildconf footer Makefile.frag php.gif README.PARAMETER_PARSING_API README.WIN32-BUILD-SYSTEM tests buildconf.bat generated_lists Makefile.gcov php.ini-development README.PHP4-TO-PHP5-THIN-CHANGES run-tests.php TSRM CODING_STANDARDS genfiles Makefile.global php.ini-proction README.REDIST.BINS sapi UPGRADING config.guess header makerpm README.EXTENSIONS README.RELEASE_PROCESS scripts UPGRADING.INTERNALS config.sub INSTALL missing README.EXT_SKEL README.SELF-CONTAINED-EXTENSIONS server-tests-config.php vcsclean configure install-sh mkinstalldirs README.GIT-RULES README.STREAMS server-tests.php win32 configure.in LICENSE netware README.input_filter README.SUBMITTING_PATCH snapshot Zend [root@pangou php-5.4.14]# ./configure --prefix=/opt/php --with-config-file-path=/opt/php/etc --with-mysql=/usr/ --with-mysqli=/usr/bin/mysql_config --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --with-mime-magic // 編譯時間可能有點長。。。 // 編譯成功後,安裝 [root@pangou php-5.4.14]# make && make install // 安裝時間也比較長 安裝成功後,php的位置就應該在/opt/php目錄下,接下去就是配置 // 復制配置文件到配置目錄下 [root@pangou php-5.4.14]# cp /root/Downloads/php/php-5.4.14/php.ini-proction /opt/php/etc/php.ini [root@pangou php-5.4.14]# cp /opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf [root@pangou php-5.4.14]# cd /opt/php/etc/ [root@pangou etc]# ls php-fpm.conf php-fpm.conf.default php.ini // 然後配置nginx的配置文件,讓其可以運行php [root@pangou etc]# cd /opt/nginx/conf/ [root@pangou conf]# ls fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf scgi_params uwsgi_params win-utf fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default [root@pangou conf]# vim nginx.conf 1、去掉 #user nobody; 的#號, 變成 user nobody; 2、去掉 #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} 之前的#號, 並修改 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 為 fastcgi_param SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name; 最終修改後的內容為: location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name; include fastcgi_params; } 重啟nginx服務,並開啟php-fpm [root@pangou ~]# /opt/nginx/sbin/nginx [root@pangou ~]# /opt/php/sbin/php-fpm // 創建phpinfo文件 [root@pangou ~]# vim /opt/nginx/html/phpinfo.php 內容為 phpinfo(); ?> 訪問127.0.0.1/phpinfo.php 安裝成功。mysql,mysqli等擴展都有。 這邊有一點偷懶,並沒有編譯安裝mysql,而是使用yum安裝的mysql。
⑸ PHP是怎麼進行輸入輸出的
php://stdin, php://stdout 和 php://stderr
php://stdin,php://stdout 和 php://stderr允許訪問 PHP 進程相應的輸入或者輸出流。
php://input
php://input 是個可以訪問請求的原始數據的只讀流。 POST 請求的情況下,最好使用 php://input 來代替 $HTTP_RAW_POST_DATA(原生的post數據),因為它不依賴於特定的 php.ini 指令,內存消耗更少。如下例:
<formaction=method=post
<inputtype=textname=test<inputtype=submitname=/</form<?phpecho file_get_contents(php://input);?結果:
php://output
php://output 是一個只寫的數據流, 允許你以 print 和 echo 一樣的方式 寫入到輸出緩沖區。
php://fdphp://fd 允許直接訪問指定的文件描述符。 例如 php://fd/3 引用了文件描述符 3。
php://memory 和 php://temp
php://memory 和 php://temp 是一個類似文件 包裝器的數據流,允許讀寫臨時數據。 兩者的唯一區別是 php://memory 總是把數據儲存在內存中, 而 php://temp 會在內存量達到預定義的限制後(默認是 2MB)存入臨時文件中。 臨時文件位置的決定和 sys_get_temp_dir() 的方式一致。
php://filter
php://filter 是一種元封裝器, 設計用於數據流打開時的篩選過濾應用。 這對於一體式(all-in-one)的文件函數非常有用,類似 readfile()、 file() 和 file_get_contents(), 在數據流內容讀取之前沒有機會應用其他過濾器。參數如下:如下例:<?php/* 這會以大寫字母輸出的全部內容 */
⑹ php自定義一個函數用來過濾表單的。。比如說filter($_POST);調用filter函數的時
function filter($array){
foreach($array as $k=>$v){
$array[$k]=htmlspecialchars(strip_tags($v));
$array[$k]=eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile',$array[$k];
}
}
⑺ 帝國cms中php和Apache 如何升級
帝國cms中php和Apache 如何升級???
問的問題都有問題。
是升級php和apache
然後重新安裝帝國cms就行啦。
升級前先備份,
php升級直接覆蓋安裝就可以了。
Apache升級步驟
找個訪問量小的時候,進行如下操作:
1 備份好配置文件,網站代碼文件, moudeles文件
2 卸載老版本。
3 修改老版本安裝文件夾名,
4 安裝新版本和老版本在同一路徑。(我是選擇了第三步不修改老版本文件夾名已經直接安裝新版本到另外一個路徑)
5 恢復moudeles文件,然後恢復配置文件
6 重啟,是否成功,沒有成功看日誌提示
7 查看各個網站是否成功。這一步可以在升級完PHP與MySQL再測試。
⑻ PHP $filter = $_REQUEST['filter'];'filter'裡面會有些啥解釋下,O(∩_∩)O謝謝
$filter=$_REQUEST['filter'];
這個得看你的程序前後是怎麼寫的$_REQUEST是指可以接收get和post方式傳過來的數據,而filter是你自己定義的,是什麼就只有你自己知道了
⑼ filter函數沒有的數據能不能不顯示
能。Filter函數(Filterfunction)是PHP核心的組成部分,作用是過濾。PHP過濾器用於對來自非安全來源的數據(比如用戶輸入)進行驗證和過濾。filter函數沒有的數據能不顯示,函數是PHP核心的組成部分。無需安裝即可使用這些函數。
⑽ PHP如何從文本中提取指定行數內容
PHP如何從文本中提取指定行數內容?在php中,通過fopen()方法打開文件,在while中使用fgets()方法獲取每行數據,每讀到一行,就使用標識記錄一次,通過累計記錄數計算出文件的行數。下面介紹實現的過程。
方法/步驟分步閱讀
1
/7
新建一個php文件,命名為handle.php,用於講解PHP怎麼獲取文件的行數。
2
/7
新建一個文本文件,命名為test.txt,在裡面輸入四行數據,分別是aaa,bbb,ccc,ddd。
3
/7
在handle.php文件里,使用fopen方法以只讀方式打開test.txt文件,代碼如下:
4
/7
在handle.php文件里,創建一個初始變數i,用於保存文件內容的行數。
5
/7
通過while()語句,使用fgets方法從文件指針中讀取一行,每讀取一行,變數i自加一,直到到達文件末尾停止while的執行。
註:!feof($handle),函數檢測是否已到達文件末尾。
6
/7
最後,使用echo輸出文件的行數,並通過fclose關閉文件資源。代碼如下:
7
/7
在瀏覽器執行handle.php文件,查看輸出的行數,執行的結果為4行。
內容僅供參考並受版權保護