經過半個小時的PHP源頭摔跤後,我放棄了。 :P問題是 - PHP flock()函數在Gentoo Linux系統上調用了哪些系統調用?我遇到了一些問題(比如塊爲30秒 - 每20個循環迭代類問題),我想知道爲什麼會這樣。PHP flock() - 引擎蓋下有什麼?
6
A
回答
0
除非我誤解了你的問題,否則PHP的flock()
是Gentoo上Unix系統函數flock()
的調用。它們具有相同的語義。
0
您是否在聯網或安裝的驅動器上使用它?如果您遇到的問題是deadlock,並且有些comments in the documentation談論此問題,我不會感到驚訝。
3
// example: $stream = fopen(FILE, 'rb') or die('???');
$md = stream_get_meta_data($stream);
echo $md['wrapper_type'];
flock($stream);
如果打印
plainfile那麼調用php函數flock()由調用flock()的php_stdiop_set_option(...)處理。取決於PHP是否使用HAVE_FLOCK編譯,這可能是系統調用
flock()或flock_compat.c中定義的函數,該函數使用
fcntl()。在我的gentoo系統上,PHP是用HAVE_FLOCK編譯的。
主/流/ plain_wrapper.c @靜態INT php_stdiop_set_option(...):
case PHP_STREAM_OPTION_LOCKING: if (fd == -1) { return -1; } if ((zend_uintptr_t) ptrparam == PHP_STREAM_LOCK_SUPPORTED) { return 0; } if (!flock(fd, value)) { data->lock_flag = value; return 0; } else { return -1; } break;
2
http://www.opengroup.org/onlinepubs/009695399/functions/fcntl.html
/etc/standard/flock_compat.c [line 66]
ret = fcntl(fd, operation & LOCK_NB ? F_SETLK : F_SETLKW, &flck);
相關問題
- 1. Prolog如何在技術上工作?引擎蓋下有什麼?
- 2. 引擎蓋下的繼承
- 3. XNA在引擎蓋下?
- 4. 什麼是基於Node.js的引擎蓋下?
- 5. 自動裝箱規則,引擎蓋下是什麼?
- 6. 參數綁定:引擎蓋下發生了什麼?
- 7. Touchstart vs Click。引擎蓋下發生了什麼?
- 8. 什麼是Twig for php模板引擎?
- 9. CSS如何在引擎蓋下工作?
- 10. Mockito.when如何在引擎蓋下工作
- 11. callvirt如何在引擎蓋下工作?
- 12. readline函數:引擎蓋下,python
- 13. gmail如何在引擎蓋下工作
- 14. 引擎蓋下如何遞歸處理
- 15. 什麼物理引擎會對Silverlight池引擎有好處?
- 16. Netty setRadable()引擎蓋
- 17. 爲什麼引擎很有用?
- 18. 停留在刷新的gradle項目。引擎蓋下發生了什麼?
- 19. 如果找不到匹配項,替換會做什麼? (引擎蓋下)
- 20. 使用flock()來鎖定流只有在什麼情況下才能工作?
- 21. 爲什麼引擎instanceof GroovyScriptEngineImpl?
- 22. 什麼是腳本引擎?
- 23. 什麼是Docker引擎?
- 24. 看到Ruby的引擎蓋?
- 25. Rails3引擎幫手覆蓋
- 26. Google容器引擎和容器優化計算引擎有什麼區別?
- 27. 爲什麼不使用規則引擎?或規則引擎
- 28. 爲什麼模板引擎:smarty或phptemplate,還有其他?
- 29. 新的谷歌應用程序引擎!接下來做什麼?
- 30. 在這種情況下使用什麼JavaScript庫/模板引擎?
語義 - 是的。但它真的叫flock()嗎? – 2009-06-16 14:16:09
我無法證明它,因爲我現在沒有運行PHP的副本,但我相信是的,是的。爲什麼不用strace自己試試呢? – 2009-06-16 14:25:00
我只有FTP訪問服務器。 – 2009-06-16 14:28:14