$this->rootPath 是設(shè)置的存儲路徑,只要這段代碼放到 onMessage中就無法使用,不放onMessage中,放其他非workman代碼中,就正常了,求大神解答?
//判斷保存目錄是否存在
if(!file_exists($this->rootPath)){
mkdir($this->rootPath,0777,true);
}
$fp = fopen($this->rootPath.$this->savename.".".$this->ext, 'w');
為啥要這么寫,業(yè)務(wù)用途:
主要這邊需要開發(fā)一個遠(yuǎn)程在線下載圖片/附件到服務(wù)器功能,傳統(tǒng)的做法輪詢,但是浪費服務(wù)器資源,后改為websocket了,目前無法創(chuàng)建存儲文件夾
問題解決了:
因為workerman是基于phpcli的,phpcli路徑和普通的路勁不一樣,我這里的$this->rootPath 是相對路徑,所以出錯了,改為絕對路徑就行了;
遇到同樣問題,后來翻php手冊發(fā)現(xiàn)是file_exists函數(shù)自帶緩存功能,貌似php文件操作的函數(shù)都有緩存,操作磁盤文件前最好調(diào)用下 clearstatcache()
Note: 此函數(shù)的結(jié)果會被緩存。參見 clearstatcache() 以獲得更多細(xì)節(jié)。