fsockopen實現多執行緒或非同步

2021-09-24 22:39:33 字數 1523 閱讀 8501

fsockopen函式

fsockopen()與fputs()來模擬多執行緒。

格式:fsockopen('hostname','port','errorno','errorstr');

port:埠,一般為80

errorno:錯誤**

errorstr:錯誤資訊

例: $fp = fsockopen('localhost', 80, $errorno, $errorstr);

fputs(fsockopen變數,'url資訊')

fsockopen變數:fsockopen返回值

url資訊:

格式:"傳送方式  除網域名稱或ip外的php檔案路徑?傳送變數\r\n"

傳送方式:get/post

除網域名稱或ip外的php檔案路徑?傳送變數:/webroot/curl/mail/sendmail.php?falg=28\r\n

例:「get /webroot/curl/mail/sendmail.php?falg=28\r\n」

例:fputs($fp, "get /webroot/curl/mail/sendmail.php?falg=28\r\n");

可以模擬實現多執行緒。當服務1的a程式在執行,使用fsockopen()訪問伺服器2的b程式,而不需要等待伺服器2的b程式反饋結果,使伺服器1的a程式的正常執行。

例子如下:

localhost/webroot/curl/mail/write.php

<?php

function asyn_sendmail()

fputs($fp, "get /webroot/curl/mail/sendmail.php?falg=28\r\n");

#請求的資源 url 一定要寫對

fclose($fp);

}echo time() . '

';echo '

call asyn_sendmail

';asyn_sendmail();

echo '

call finished';

echo date('h:i:s') . '

';?>

localhost/webroot/curl/mail/sendmail.php

<?php

sleep(20);

fopen('mail.txt'.date('his'),"w");

$conn=mysqli_connect('localhost','root','');

mysqli_select_db($conn,'test');

mysqli_query($conn,'insert into test1 values('.$_get['falg'].',"ttpttp")');

註解:當write.php執行時,呼叫了fsockopen,並且將路徑指向sendmail.php,sendmail.php開始運動,但同時write.php也會正常向下執行。

(40)多執行緒 實現多執行緒方法

建立執行緒用法 1.繼承thread,重寫run 方法,建立子類物件 a a new a 執行緒開始執行 a.start 2.實現runnable介面,實現run 方法,建立實現類物件 a a new a 建立 類物件 thread t new thread a 執行緒開始執行 t.start 上面...

談談並行 併發或多執行緒

1.cpu的發展趨勢 核心數目依舊會越來越多,根據摩爾定律,由於單個核心效能提公升有著嚴重的瓶頸問題,普通的pc桌面在2018年可能回到24核心。2.併發和並行的區別 所有的併發處理都有排隊等候,喚醒和執行這三個步驟,所以併發是巨集觀的觀念,在微觀上他們都是序列被處理的,只不過資源不會在某乙個上被阻...

非同步程式設計(或多執行緒程式設計)

程序是一種正在執行的程式。執行緒是程式中的乙個執行流。多執行緒是指乙個程式中可以同時執行多個不同的執行緒來執行不同的任務。thread是建立和控制線程的類。managedthreadid是執行緒id。currentthread是獲取當前正在執行的執行緒。同步是呼叫一旦開始,呼叫者必須等到方法呼叫返回...