首页 / 缓存 / PHP的http流包装缓存文件?细节?
PHP的http流包装缓存文件?细节?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP的http流包装缓存文件?细节?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2676字,纯文字阅读大概需要4分钟。
内容图文
我正在寻找有关PHP的http流包装器是否以及如何尝试缓存文件的信息.任何人都可以指出这方面的信息吗?
这个问题的答案,Does PHPs fopen function implement some kind of cache?,表明包装器可能会尝试尊重缓存头,但我没有在文档中找到任何关于此的内容.
具体来说,我想知道:
> PHP缓存文件是否会访问http:// urls.
>如果确实如此,它会保留多长时间?
>缓存的最大大小是多少?
>每个文件的最大大小是否会缓存?
>缓存是否在请求之间保持不变?
>出于好奇,它会在内存或磁盘上缓存吗?哪里?
解决方法:
简短回复:Q1 No. Q2-5不适用.
更长的响应:Does PHPs fopen function implement some kind of cache?中的答案是错误的 – 至少对于Linux而言,因为这个PHP代码库对于WinXXX也是常见的.
这与我的理解相反,所以我检查而不是猜测:
$echo "Hello World" > /var/www/xx.txt
$php -r 'echo file_get_contents("/var/www/xx.txt");'
Hello World
$strace -tt -o /tmp/strace > php -r 'echo file_get_contents("http://localhost/xx.txt");'
Hello World
并查看系统跟踪日志.这是相关的切口:
00:15:41.887904 socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 3
00:15:41.888029 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
00:15:41.888148 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
00:15:41.888265 connect(3, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
00:15:41.888487 poll([{fd=3, events=POLLIN|POLLOUT|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=3, revents=POLLOUT}])
00:15:41.888651 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
00:15:41.888838 fcntl(3, F_SETFL, O_RDWR) = 0
00:15:41.888975 sendto(3, "GET /xx.txt HTTP/1.0\r\n", 22, MSG_DONTWAIT, NULL, 0) = 22
00:15:41.889172 sendto(3, "Host: localhost\r\n", 17, MSG_DONTWAIT, NULL, 0) = 17
00:15:41.889307 sendto(3, "\r\n", 2, MSG_DONTWAIT, NULL, 0) = 2
00:15:41.889437 poll([{fd=3, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
00:15:41.889544 poll([{fd=3, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=3, revents=POLLIN}])
00:15:41.891066 recvfrom(3, "HTTP/1.1 200 OK\r\nDate: Wed, 15 F"..., 8192, MSG_DONTWAIT, NULL, NULL) = 285
00:15:41.891235 poll([{fd=3, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=3, revents=POLLIN}])
00:15:41.908909 recvfrom(3, "", 8192, MSG_DONTWAIT, NULL, NULL) = 0
00:15:41.909016 poll([{fd=3, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=3, revents=POLLIN}])
00:15:41.909108 recvfrom(3, "", 8192, MSG_DONTWAIT, NULL, NULL) = 0
00:15:41.909198 close(3) = 0
00:15:41.909323 write(1, "Hello World\n", 12) = 12
00:15:41.909532 munmap(0x7ff3866c9000, 528384) = 0
00:15:41.909600 close(2) = 0
00:15:41.909648 close(1) = 0
对localhost的GET请求,响应,对STDOUT的回显和关闭.没有缓存.纳达.抱歉.
内容总结
以上是互联网集市为您收集整理的PHP的http流包装缓存文件?细节?全部内容,希望文章能够帮你解决PHP的http流包装缓存文件?细节?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。