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() 不一样,因为例如 fileinode() 在 Windows 上也缺失。通常,ftok() 会根据文件 inode 和文件所在的硬盘的系统次要 ID 来计算密钥。
行为类似于 PHP 的 ftok(),如果文件缺失或 $filename 为空,则返回 -1,成功时以十六进制返回计算的 int。
--
此致,
David Rech