2010-08-06 2 views
7

Будет ли я в порядке делать это?PHP включает файл в foreach Loop

foreach ($item as $val) 
{ 
    include('external_script.php'); 
} 

Где внешний сценарий составляет около 800 строк кода, я хочу сохранить отдельные для организационных целей.

Милостивый!

+5

........ Итак, я поддерживаю 30 000 строк кучи провалов, где программист делает это все время. Если вы его, я могу пробить вас через интернет? – Incognito

+0

@Incognito, вы имеете в виду 30k строк в одном файле или вы имеете в виду * total * из 30k строк? – Pacerier

ответ

4

Он будет работать, но накладные расходы ввода-вывода на диске для вызова внешнего файла в цикле, если у вас нет APC, XCache, eAccelerator. Кроме того, вы не можете использовать include. Вы должны использовать include_once, если это тот же файл, который вы перезагружаете.

+0

В определенной ситуации на host ipage.com это делает мне ошибку сервера 500. – atwellpub

+1

Многое может привести к ошибке сервера 500. Возможно, вам стоит начать новый Q & A. – stillstanding

7

Думаю, вам лучше использовать функцию для этого.

Включение файла требует чтения, разбора и интерпретации файла. Но если у вас есть функция, которую вы только что передаете с текущим $item, то ее код просто считывается, анализируется и интерпретируется один раз, и у вас не будет таких накладных расходов, которые у вас были бы с включением.

+1

+1, но, скорее всего, несколько функций, если это 800 LOC. – Gordon

+1

Проблема, которую я вижу при создании функции, - это передать переменные в функцию, и есть более 80 переменных, которые использует LOC. – atwellpub

+0

@atwellpub: Являются ли эти переменные определенными где-то раньше? – Gumbo

1

Независимо от того, будете ли вы в порядке или нет, зависит от того, хотите ли вы включить внешний скрипт на каждой итерации или нет.

Обратите внимание, что если ваш включенный файл содержит функции, вы получите ошибки, пытаясь определить одну и ту же функцию несколько раз.

0

ermmmm - why?

Если его один и тот же файл включает его один раз - возможно, поместите код в него в функцию и просто вызовите эту функцию, сколько раз вам нужно.

+0

Это способ выполнения функции бедного человека. – Pacerier

1

Вы не были убиты богом за это, и это даже сработает. Но все же функция лучше.

-5

Я думаю, вам стоит подумать об использовании функции eval().