致命错误:调用未定义的函数sem_get()

我是新来的PHP,我试图运行我的Windows开发机器上的其他人的代码。 我安装了PHP 5和Apache 2.2,但是当我尝试运行它时出现错误:

Fatal error: Call to undefined function sem_get() 

它被抛出的线是:

 private function UpdateCounter($semkey, $memkey, $count) { $sem_h = sem_get($semkey, 1);//this line is the problem ... } 

sem_get()函数由Semaphore,Shared Memory和IPC组件提供。

引用它的手册部分的介绍

此扩展在Windows平台上不可用。

我不知道这是否会像预期的那样工作,但是我在Windows上找到了sem_get的解决方法 :

 if (!function_exists('sem_get')) { function sem_get($key) { return fopen(__FILE__ . '.sem.' . $key, 'w+'); } function sem_acquire($sem_id) { return flock($sem_id, LOCK_EX); } function sem_release($sem_id) { return flock($sem_id, LOCK_UN); } } 

另外,我也需要Windows上的ftok :

 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)); } } }