phpopen
利用函數function_exists();
可以查看是否存在某一個函數,
bool function_exists ( string $function_name
);
其得出的結果是BOOL值,
如果為1或者是TRUE,代表開啟了;
如果為0或者FALSE,代表關閉了。
Ⅱ php開啟fsockopen函數
1.方法一:
第一步:
php.ini文件中查找
allow_url_fopen = On
使其值為On
第二步:
php.ini文件中查找
extension=php_openssl.dll
如果前面有分號,去掉分號
第三步:
重啟web伺服器,apache或IIS
2.還有一種情況,也就是方法二:
1. vi php.ini
找到 allow_url_fopen 這個參數設置成 On,即
allow_url_fopen = On
2. 讓你的php支持 opensll擴展。
默認,是沒有openssl擴展的,只能重新編譯安裝。
yum install openssl openssl-devel
cd /usr/local/src/php-5.2.14/ext/openssl
/usr/local/php/bin/phpize
./configure –with-openssl –with-php-config=/usr/local/bin/php-config
make && make install
看提示,把編譯成的openssl.so 拷貝到你在php.ini 中指定的 extension_dir 下
3. vi php.ini
加入
extension=openssl.so
4. 重啟web server
Ⅲ php使用fsockopen建立長連接接收數據的疑問
你這個代碼邏輯是錯誤的,且不說什麼長連接,但看你
$len = fwrite( $fp, $out ); 發送一段信息出去,那麼這個$len就一定有效,那麼
while($len){
//這里如果不在特定的情況重置$len的話,這個while就是個死循環!
}
拋開這個邏輯錯誤,你的本意是發送一個信息,服務端有返回數據就接收,這樣的代碼邏輯能實現你的想法么?你看看,你發送了一次,就依你發送的為標准讓整個邏輯進入了死循環的讀取過程,這還是服務端有響應數據便接收么?分明是你有發送數據便無限接收。
你還是梳理一下思路再寫。