2014-09-24 84 views
3

PHP有inotify擴展名,但HHVM不支持它。如何使用HHVM監視文件更改?

如何監視至少在HHVM上的IN_CLOSE_WRITE事件的文件?

<?php // sample inotify code for PHP 

$fd = inotify_init(); 
$watch_descriptor = inotify_add_watch($fd, __FILE__, IN_ATTRIB); 
touch(__FILE__); // generate an event 
$events = inotify_read($fd); 
var_dump($events); 
+0

您是否勾選了[this](http://docs.hhvm.com/manual/en/book.inotify.php)? – Prasanth 2014-09-27 18:28:48

+1

@Prasanth是的,如果你[更深](http://docs.hhvm.com/manual/en/function.inotify-init.php),你會看到一個很大的警告說「不支持HHVM」 。這是問題的目的。 – marcio 2014-09-27 22:51:04

回答

3

正如你已經發現,在inotify的擴展不HHVM目前支持。 HHVM社區可能會編寫一個支持API的HNI擴展。 HHVM已經在內部爲其「statcache」代碼(例如用於緩存lstat()信息)使用inotify)。因此,構建環境已經設置爲檢測inotify的可用性。利用這一點將使得編寫本地擴展比從頭開始更容易。

在此之前,一種替代方法是將守望者與您的PHP代碼結合使用。在推送模式中,看守員根據您之前配置的triggers執行PHP腳本。在拉/輪詢模型中,你可以通過套接字看守員。使用守望者的一個好處是支持更多的操作系統,而不僅僅是Linux。使用守望者與本地inotify擴展的性能將取決於工作負載。