在PHP中,如何检查流资源(或文件指针,句柄或您想要调用它们的任何内容)是可读还是可写?例如,如果您遇到的情况是您对资源的打开或创建方式一无所知,那么如何检查它是否可读?你如何检查它是否可写?
根据我所做的测试(只使用PHP 5.3.3的常规文本文件),fread()当资源不可读时,不会在任何级别抛出任何错误.它只返回一个空字符串,但它也为空文件执行此操作.理想情况下,最好选择不修改资源本身的检查.通过尝试从中读取资源来测试资源是否可读将改变指针的位置.
相反,fwrite()当资源不可写时,不会在任何级别抛出任何错误.它只返回零.这稍微有用一些,因为如果你试图将一定数量的字节写入文件并fwrite()返回零,那么你就会知道出了什么问题.但是,这仍然不是一种理想的方法,因为在我需要写入它之前知道它是否可写会更好,而不是试图写入它并查看它是否失败.
此外,理想情况下,检查应该适用于任何类型的流资源,而不仅仅是文件.
这可能吗?有这样的事吗?我一直找不到任何有用的东西.提前感谢您的回答.
我有一个CSS动画,当我将鼠标悬停在它上面时无限旋转div.CSS看起来像这样:
@-webkit-keyframes rotate {
from { -webkit-transform: rotate(0deg); }
to { -webkit-transform: rotate(360deg); }
}
#square {
background-color: #369;
height: 100px;
margin: 50px;
width: 100px;
-webkit-transform: rotate(0deg);
}
#square:hover {
-webkit-animation: rotate 5s linear infinite;
}
Run Code Online (Sandbox Code Playgroud)
我试图解决的问题是,当我徘徊时,它会突然跳回原来的状态.当它处于动画中间时,这可能会不和谐.有没有办法慢慢过渡到原始状态?通常情况下,您可以使用过渡来执行此类操作,但它似乎不能与动画结合使用.例如,我尝试在上面的示例中添加-webkit-transition: all 2s;到#square选择器,但它没有做任何事情.
我正在尝试为Jekyll编写一个自定义标记插件,它将输出网站上所有页面(而不是帖子)的分层导航树.我基本上想要一堆嵌套<ul>的链接(页面标题作为链接文本)到页面,当前页面由某个CSS类标注.
我对红宝石很缺乏经验.我是一个PHP家伙.
我想我只是尝试迭代所有页面并输出一维列表,以确保我至少可以做到这一点.这是我到目前为止所拥有的:
module Jekyll
class NavTree < Liquid::Tag
def initialize(tag_name, text, tokens)
super
end
def render(context)
site = context.registers[:site]
output = '<ul>'
site.pages.each do |page|
output += '<li><a href="'+page.url+'">'+page.title+'</a></li>'
end
output += '<ul>'
output
end
end
end
Liquid::Template.register_tag('nav_tree', Jekyll::NavTree)
Run Code Online (Sandbox Code Playgroud)
我将它插入我的液体模板中{% nav_tree %}.
问题是page上面代码中的变量没有您期望的所有数据.page.title是未定义的,page.url只是在它前面带有正斜杠的基本名称(例如/a/b/c.html,它只是给我/c.html).
我究竟做错了什么?
旁注:我已经尝试用纯液体标记来做这个,我最终放弃了.我可以轻松地site.pages使用Liquid 进行迭代,但我无法找到适当嵌套列表的方法.
在Python中,为什么os.lseek()比文件类对象seek()上的方法慢得多?
$ dd if=/dev/urandom of=test.bin bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes transferred in 0.063247 secs (16579072 bytes/sec)
$ python -m timeit -s 'import os; f = open("test.bin", "r")' 'for i in xrange(10000): f.seek(i, os.SEEK_SET)'
100 loops, best of 3: 2.62 msec per loop
$ python -m timeit -s 'import os; f = os.open("test.bin", os.O_RDONLY)' 'for i in xrange(10000): os.lseek(f, i, os.SEEK_SET)'
100 loops, best of 3: 4.23 msec per loop
Run Code Online (Sandbox Code Playgroud)
在 …