Windows 上缺少 ftok()?這是我的小變通方法
<?php
if( !function_exists('ftok') )
{
function ftok($filename = "", $proj = "")
{
if( empty($filename) || !file_exists($filename) )
{
return -1;
}
else
{
$filename = $filename . (string) $proj;
for($key = array(); sizeof($key) < strlen($filename); $key[] = ord(substr($filename, sizeof($key), 1)));
return dechex(array_sum($key));
}
}
}?>
注意:即使機率很低,*可能*會出現重複的金鑰。
金鑰的計算方式與原始 UNIX ftok() 不同,因為 i.e. windows 上也缺少 fileinode()。通常 ftok() 會根據檔案 inode 和檔案所在的硬碟系統次要 ID 來計算金鑰。
行為類似於 PHP 的 ftok(),如果缺少檔案或 $filename 為空,則會回傳 -1,成功時會回傳計算的十六進制整數。
--
問候,
David Rech