Это прекрасно работает ...
echo <<<EOE
<script type="text/javascript">
if (navigator.cookieEnabled)
document.cookie = "tzo="+ (- new Date().getTimezoneOffset());
</script>
EOE;
if (!isset( Это прекрасно работает ...
[110]COOKIE['tzo'])) {
echo <<<EOE
<script type="text/javascript">
if (navigator.cookieEnabled) document.reload();
else alert("Cookies must be enabled!");
</script>
EOE;
die();
}
$ts = new DateTime('now', new DateTimeZone('GMT'));
$ts->add(DateInterval::createFromDateString( Это прекрасно работает ...
[110]COOKIE['tzo'].' minutes'));
Рассмотрите возможность использования urllib2
, если это возможно в вашем случае. Он более продвинутый и простой в использовании, чем urllib
.
Вы можете легко обнаружить любые ошибки HTTP:
>>> import urllib2
>>> resp = urllib2.urlopen("http://google.com/abc.jpg")
Traceback (most recent call last):
<<MANY LINES SKIPPED>>
urllib2.HTTPError: HTTP Error 404: Not Found
resp
на самом деле является объектом HTTPResponse
, который вы можете сделать много полезных вещей с:
>>> resp = urllib2.urlopen("http://google.com/")
>>> resp.code
200
>>> resp.headers["content-type"]
'text/html; charset=windows-1251'
>>> resp.read()
"<<ACTUAL HTML>>"
Нужно ли заново заселять все сразу, или можно это делать по частям в setTimeout ()? Я понимаю, что по частям это, вероятно, займет еще больше времени, но для пользователя стоит многого, чтобы увидеть, что что-то происходит, а не очевидная блокировка.
Что ж, я попробовал кое-что интересное, связанное с этим - мне было интересно, могу ли я автоматически получить вывод каждой из вещей, которые появляются в каталоге, которые не нуждаются в параметрах, поэтому я написал:
needparam=[]
for each in dir(b):
x='b.'+each+'()'
try:
eval(x)
print x
except:
needparam.append(x)
В итоге я получил свою реализацию retrieve
, с помощью pycurl
он поддерживает больше протоколов, чем urllib / urllib2, надеюсь, это поможет другим люди.
import tempfile
import pycurl
import os
def get_filename_parts_from_url(url):
fullname = url.split('/')[-1].split('#')[0].split('?')[0]
t = list(os.path.splitext(fullname))
if t[1]:
t[1] = t[1][1:]
return t
def retrieve(url, filename=None):
if not filename:
garbage, suffix = get_filename_parts_from_url(url)
f = tempfile.NamedTemporaryFile(suffix = '.' + suffix, delete=False)
filename = f.name
else:
f = open(filename, 'wb')
c = pycurl.Curl()
c.setopt(pycurl.URL, str(url))
c.setopt(pycurl.WRITEFUNCTION, f.write)
try:
c.perform()
except:
filename = None
finally:
c.close()
f.close()
return filename
Вы можете создать новый URLopener (унаследованный от FancyURLopener) и бросать исключения или обрабатывать ошибки любым удобным для вас способом. К сожалению, FancyURLopener игнорирует 404 и другие ошибки. См. этот вопрос: