1. 程式人生 > >OPcache 檔案快取重新整理

OPcache 檔案快取重新整理

PHP載入opcache擴充套件後,經常有檔案由於OPcache快取修改後不生效,寫個指令碼手動執行

<html>
	<meta charset="utf-8"/>
	<body>
		<form action="" method="post">
			<textarea name="files"  rows=10 cols=60><?php echo $_POST['files'];?></textarea>
			<p/>
			每個檔案一行,並用分號( ; )分割,例如:<br>
			App\Lib\Action\a.php;<br>
			App\Lib\Action\b.php;<br>

			<p/>
			<input type="radio" name="app" value="crm" <?php if($_POST['app']=='crm'){echo 'checked="checked"';}?>/> CRM
			<input type="radio" name="app" value="mobile" <?php if($_POST['app']=='mobile'){echo 'checked="checked"';}?> /> Mobile

			<input type="submit" value="確定重新整理"/>
		</form>
	</body>
</html>

<?php
	
	if(isset($_POST) && trim($_POST['files'])){
		$file_arrs=explode(';',trim($_POST['files'],';'));  //獲取要重新整理的檔案陣列
        
		$app=trim($_POST['app']);
		$root_path="/mnt/data/www/{$app}/";     //專案路徑

		//print_r($file_arrs);die;
		foreach($file_arrs as $file){
			if(trim($file)!=''){
				$file=str_replace('\\','/',trim(trim($file),'/'));  //替換Linux路徑符號
				$file_path=$root_path.$file;  //完整檔案路徑

				$result=opcache_invalidate($file_path);    //重新整理檔案

				if($result){
					echo $file_path,'檔案重新整理成功<br>';
				}else{
					echo $file_path,'檔案重新整理失敗,可能檔案不存在<br>';
				}
			}
		    
		}
		
	}