$this->rootPath 是設(shè)置的存儲(chǔ)路徑,只要這段代碼放到 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ā)一個(gè)遠(yuǎn)程在線下載圖片/附件到服務(wù)器功能,傳統(tǒng)的做法輪詢,但是浪費(fèi)服務(wù)器資源,后改為websocket了,目前無法創(chuàng)建存儲(chǔ)文件夾
問題解決了:
因?yàn)閣orkerman是基于phpcli的,phpcli路徑和普通的路勁不一樣,我這里的$this->rootPath 是相對(duì)路徑,所以出錯(cuò)了,改為絕對(duì)路徑就行了;
遇到同樣問題,后來翻php手冊(cè)發(fā)現(xiàn)是file_exists函數(shù)自帶緩存功能,貌似php文件操作的函數(shù)都有緩存,操作磁盤文件前最好調(diào)用下 clearstatcache()
Note: 此函數(shù)的結(jié)果會(huì)被緩存。參見 clearstatcache() 以獲得更多細(xì)節(jié)。