- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
<?php
// Получение страницы напрямую или через проксю
function getfile($GrabURL)
{
global $proxy_name,$proxy_port;
if($proxy_name!="")
{
$f = urldecode($GrabURL);
$proxy_fp = fsockopen($proxy_name, $proxy_port,$errno,$errstr);
if (!$proxy_fp)
return false;
$out = "GET ".$f." HTTP/1.0\r\n\r\n";
fwrite($proxy_fp, $out);
$x = "";
stream_set_timeout($OpenFile, 10);
stream_set_blocking($OpenFile, 0);
while (!feof($proxy_fp))
{
$RetrieveFile = fread($proxy_fp,8192) or last;
$x = $x.$RetrieveFile;
}
fclose($proxy_fp);
}
else
{
$OpenFile = fopen($GrabURL, "rb");
if(!$OpenFile) return "";
$i = 0;
$x = "";
stream_set_timeout($OpenFile, 10);
stream_set_blocking($OpenFile, 0);
while (!feof($OpenFile))
{
$RetrieveFile = fread($OpenFile, 8192);
$x=$x.$RetrieveFile;
}
fclose($OpenFile);
}
return $x;
}
?>
Аналог file_get_contents. По просьбам из #4065
kainwinterheart 23.08.2010 02:26 # +2
daemon_master 23.08.2010 03:02 # +2
7ion 23.08.2010 10:16 # +2
Вот этот товарищ, например, определяет переменные до их использования:
В практическом смысле вещь спорная, но при отладке сразу видно - какая переменная что внутри себя может хранить :)
Анонимус 23.08.2010 13:45 # 0
xXx_totalwar 23.08.2010 14:02 # +4
Анонимус 23.08.2010 14:05 # +2
Скрипт обычно помещается на один экран.
Если писать на PHP серьезные приложения, то все его приимущества тут же превращаются в недостатки.
Но люди этого не понимаю, и плодят какие-то CMSы, фреймворки, и чуть ли не системы документооборота.
xXx_totalwar 23.08.2010 15:05 # +2
Lure Of Chaos 23.08.2010 15:38 # −2
cheef 23.08.2010 16:53 # 0
cheef 23.08.2010 17:00 # −1
'0' == 0
7ion 23.08.2010 10:26 # +2
В 2007 году эта функция могла быть вполне неплохой (она может работать с прокси, в отличие от того же file_get_contents).
Я бы даже сказал, что после напильничка это была бы даже хорошая функция для тех, кто Curl не любит.
Всегда же хочется своими силами попробовать, без сторонних классов и библиотек, а? ;)
Есть тупой копипаст:
В первой части это работать не будет, т. к. файл открыт как $f
Есть глупости, плохо отформатирован код, но все же я считаю это не ГК.
Кто так не считает - пожалуйста, парируйте.
Напоминаю, 2007, никаких file_get_contents не было.
Так что это не "извращения с сокетами", по-другому никак было.
cheef 23.08.2010 11:07 # 0
7ion 23.08.2010 12:50 # 0
"Тупо" никогда ничего делать не надо, иначе ваш код может занять еще одно почетное место в этом цитатнике.
cheef 23.08.2010 13:12 # +1
7ion 23.08.2010 13:16 # +1
В сорока пяти строчках и разбираться-то нечего, мне так все сразу понятно.
Если вы хотите нас удивить - перепишите этот код, так как вы считаете нужным.
Я хочу видеть вашу позицию в коде, а не на словах.
cheef 23.08.2010 13:25 # +4
и реализацию соответствующую.
7ion 23.08.2010 16:22 # 0
Но для несерьезных проектов сгодилась бы и такая функция.
Анонимус 23.08.2010 13:44 # 0
"вполне неплохой" эта функция могла быть в 1977м году. А потом люди открыли, что глобальные переменные это плохо, например.
7ion 23.08.2010 16:23 # 0
А я говорил о самой функции, а не о том, как туда поступают данные.
Анонимус 23.08.2010 16:34 # 0
попробуйте получить результат яндекса например
7ion 23.08.2010 18:57 # 0
Анонимус 24.08.2010 00:18 # 0
Если бы там был хотя бы ассоциативный массив (об объекте я уже не мечтаю) было бы в сто раз лучше.
Что вообще полезного в Вашей функции? Тот факт, что она умеет делать IF, и ветвится в зависимости от пустоты (или не пустоты) proxy_name?
7ion 24.08.2010 03:06 # 0
Я просто говорю про то, что это не такой ГК, как его малюют.
Автор представил нам это именно как аналог файл_гет_контентса, я же просто оппонировал к этому высказыванию.
И мне никогда не мешало отправлять заголовки строкой. Если честно - никогда не пользовался курлом при работе с удаленными файлами.
Анонимус 23.08.2010 13:32 # +3
сразу в печь