Проблема с include-ом url-ов

deft

Guest
Проблема с include-ом url-ов

Недавно провайдер решил сделать благое дело и поставить новый php 4.3.4
И все бы ничего, но вдруг при инклюдах урлов стали появляться сообщения об ошибках такого вида (причем сами инклюды срабатывают):

Warning: main(): stream does not support seeking in /home/public_html/script.php on line 30

Написал письмо провайдеру. Ответили вот так:
---------------
Описание этого поведения:
http://bugs.php.net/bug.php?id=24053

Решение этой проблемы - не использовать в include подключения через
http, тем более это создаёт ненужную дополнительную нагрузку на сервер.
--------------
То есть получается это баг данной версии php...
Вопрос. Как в данном случае поступить.
Варианты.
1. Подавить ошибки:
@include
Повторюсь, в этом случае все работает нормально.
2. Послушаться службу техподдержки и не использовать урлы.
Но если сделать так, то возникает проблема еще одна. Дело в том, что у меня встречаются подключения по include c параметрами типа: include("http://www.site.ru/page.php?a=1");
Если же я буду инклюдить только локальные файлы, то каким образом мне передавать параметры?
 

fixxxer

К.О.
Партнер клуба
От, блин, бред. Можно, конечно, вырезать гланды через жопу автогеном, но для начала подумай мозгами и скажи мне, накойхрен тебе вообще что-то "передавать".

Если еще тупишь - попробуй вот такой код:
--- 1.php ---
$a = "test-A";
include "2.php";

--- 2.php ---
echo "Inside 2.php: a = $a";
 

deft

Guest
fixxxer, ок:)
Убедил, бред, передавать не надо:)

Но почему не желательно использовать урлы в include?
 

BadBlock

Guest
Для инклюдов локальных файлов - разумеется, не нужно: при каждом таком инклюде запускается отдельная копия апача (для обработки запрошенного урла), и вообще, возникает полная задница.
 

IntenT

SkyDiver
BadBlock
при каждом таком инклюде запускается отдельная копия апача
Ну насмешил....
Наверное так и было-бы, не будь апачь многопоточным..
И обрабатывай include() апачь, а не пхп.
 

fixxxer

К.О.
Партнер клуба
А какой смысл в именно инклюде ремотных файлов, если ты в любом случае при этом получаешь результат выполнения скрипта? Юзай curl или fsockopen, то есть то, что непосредственно предназначено для работы с сокетами...
 

fixxxer

К.О.
Партнер клуба
Автор оригинала: IntenT
BadBlock

Ну насмешил....
Наверное так и было-бы, не будь апачь многопоточным..
И обрабатывай include() апачь, а не пхп.
Это ты не смеши людей. Не знаешь - так помолчи.

1) Апач не "многопоточный". ("поток" в твоей терминологии это Thread?)
2) Не путай virtual() с include().
 

BadBlock

Guest
> Наверное так и было-бы, не будь апачь многопоточным..

"Насрать" пишется вместе.
Как бы то ни было, это ковыряние в носу через задницу.
Лишняя нагрузка на ковыряющего, плюс переменную (козявку) при таком подходе можно легко затолкнуть в ноздрю, а вот выковырять наружу – проблема.
Со всех сторон сомнительное мероприятие.

> И обрабатывай запросы апачь, а не пхп.

Моя твой не понимай.
 

deft

Guest
Следуя этой логике получается, что когда идет <img src='url'>, то тоже вызывается отдельная копия апача?
 

b0ld

Guest
вместо инкула так попробуй:
PHP:
$url = "http://ofp.net.ru";
$fr = fopen ($url, "rb");
$read = "";
while (true) {
  $read_1 = fread ($fr, 1024);
  if (strlen ($read_1) == 0) break;
    $read .= $read_1;
  }
  echo $read;
}
 

Игорёк

Новичок
Автор оригинала: b0ld
вместо инкула так попробуй:
PHP:
$url = "http://ofp.net.ru";
$fr = fopen ($url, "rb");
$read = "";
while (true) {
  $read_1 = fread ($fr, 1024);
  if (strlen ($read_1) == 0) break;
    $read .= $read_1;
  }
  echo $read;
}
Я тоже вызываю скрипты через fopen. Мне приходится это
делать из cron'а. Так как стандартный php вызываемый у
хостера из cron'а криво сконфигурирован.

Но есть проблема: иногда такой вызов не срабатывает:
почему то http-соединение не открывается. При этом скрипт
надолго подвисает (ждет, когда придет ответ). И в таком
режиме он превышает какие-то лимиты (то ли временные,
то ли лимиты по загрузке процессора), и хостер просто
выключает его выполнение в кроне. Очень неприятно :(

Можно ли как-то вызвать скрипт по http, но так, чтобы
если в течение 15 секунд соединения нет,
то можно было сделать откат и выполнить какие-то
дальнейшие действия?
 
Сверху