flock() is PHP's portable advisory file locking function. They explicitly promote that it even works under windows:

flock() allows you to perform a simple reader/writer model which can be used on virtually every platform (including most Unix derivatives and even Windows).

I'd like to put an also portable timeout on a blocking flock() (and no busy waiting work around with the LOCK_NB option). In UNIX this can simply be achieved with setting an alarm which would send a SIGALRM :

pcntl_signal(SIGALRM, function() {}); pcntl_alarm(3); try { if (!flock($handle, LOCK_EX)) { throw new \Exception("Timeout"); } } finally { pcntl_alarm(0); pcntl_signal_dispatch(); pcntl_signal(SIGALRM, SIG_DFL); }