29#ifdef HAVE_STRUCT_FLOCK
34 flck.l_start = flck.l_len = 0;
38 flck.l_type = F_RDLCK;
40 flck.l_type = F_WRLCK;
42 flck.l_type = F_UNLCK;
48 ret = fcntl(
fd, operation &
LOCK_NB ? F_SETLK : F_SETLKW, &flck);
59#elif defined(PHP_WIN32)
105 HANDLE hdl = (HANDLE) _get_osfhandle(
fd);
106 DWORD low = 0xFFFFFFFF, high = 0xFFFFFFFF;
111 if (INVALID_HANDLE_VALUE == hdl) {
116 UnlockFileEx(hdl, 0, low, high, &
offset);
117 switch (operation & ~
LOCK_NB) {
119 if (LockFileEx(hdl, LOCKFILE_EXCLUSIVE_LOCK +
120 ((operation &
LOCK_NB) ? LOCKFILE_FAIL_IMMEDIATELY : 0),
125 if (LockFileEx(hdl, ((operation &
LOCK_NB) ? LOCKFILE_FAIL_IMMEDIATELY : 0),
135 err = GetLastError();
136 if (ERROR_LOCK_VIOLATION ==
err || ERROR_SHARING_VIOLATION ==
err) {
146#warning no proper flock support for your site