2016-02-20 37 views
1

我想在php上使用信號量但是不能得到 sem_get()函數才能工作。這是我的PHP代碼:PHP sem_get()不起作用

<?php 
    $key = 123567; 
    $maxAcquire = 1; 
    $permissions = 0666; 
    $autoRelease = 1; 

    //it gives the error on the line below 
    $semaphore = sem_get($key, $maxAcquire, $permissions, $autoRelease); 
    sem_acquire($semaphore); 
    echo "hello world!"; 
    sem_release($semaphore); 
?> 

當我嘗試與運行:

php semaphore.php 

它打印此錯誤:

PHP Fatal error: Uncaught Error: Call to undefined function sem_get() 
in /root/semaphore.php:8 
Stack trace: 
#0 {main} 
thrown in /root/semaphore.php on line 8 

我在Arch Linux的正與PHP 7.0.3(cli)。我想解決方案非常簡單,但我找不到解決的辦法。如果你能幫助我,我將不勝感激。謝謝。

+0

我記得對於一些發行版(例如Gentoo),必須打開一個編譯標誌才能使它工作 - php通常不會與多線程支持afaik打包在一起。 – SmokeDispenser

+0

信號量不是默認模塊。見[this](http://php.net/manual/en/sem.installation.php)。 –

回答

0

信號燈擴展默認不可用,如the docs說:

Support for this functions are not enabled by default. To enable System V semaphore support compile PHP with the option --enable-sysvsem . To enable the System V shared memory support compile PHP with the option --enable-sysvshm . To enable the System V messages support compile PHP with the option --enable-sysvmsg .

如果您是託管服務器上,那麼這可能託管服務不提供此。

0

謝謝大家!我註釋掉行:

extension=sysvsem.so 

的php.ini和它的工作!