Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: include_once или include
 
 автор: Diablo_   (17.01.2007 в 12:57)   письмо автору
 
 

Скажите пожалуйста,в каких случаях нужно делать include_once, а вкаких include?

   
 
 автор: XPraptor   (17.01.2007 в 12:59)   письмо автору
 
   для: Diablo_   (17.01.2007 в 12:57)
 

Если пишешь include, то можешь несколько раз открыть один и тот же файл, а если встретится функция в файле, то вылетит ошибка о двойном ее объявлении. include_once только однажды откроет и проинициализирует ресурсы, повторные будут пригнорированы.

   
 
 автор: Diablo_   (17.01.2007 в 13:01)   письмо автору
 
   для: XPraptor   (17.01.2007 в 12:59)
 

Если я допустим извлекаю обычную форму, или просто страницу, то как в этом случае?

   
 
 автор: Ihor Byra   (17.01.2007 в 13:38)   письмо автору
 
   для: Diablo_   (17.01.2007 в 13:01)
 

Лучше в всех случаях используй - require_once

   
 
 автор: Sergey89   (17.01.2007 в 13:41)   письмо автору
 
   для: Ihor Byra   (17.01.2007 в 13:38)
 

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

   
 
 автор: Diablo_   (17.01.2007 в 14:04)   письмо автору
 
   для: Sergey89   (17.01.2007 в 13:41)
 

А какие последствия могут быть от include_once и include?
И что применять в примере, который я привёл?

   
 
 автор: Sergey89   (17.01.2007 в 14:09)   письмо автору
 
   для: Diablo_   (17.01.2007 в 14:04)
 

достаточно include_once.

   
 
 автор: XPraptor   (17.01.2007 в 14:10)   письмо автору
 
   для: Diablo_   (17.01.2007 в 14:04)
 

Я же тебе написал какие последствия. Не дай бог в инклюднутом файле окажется такая же функция как и в имеющемся, или встретится опять директива инклюде того же файла который уже инклюднут в имеющемся - вылет по фатал еррор. С include_once все будет нормально, дубли просто проигнорируются.

   
 
 автор: Diablo_   (17.01.2007 в 14:14)   письмо автору
 
   для: XPraptor   (17.01.2007 в 14:10)
 

эти последствия я и так прекрастно понимаю! я думал может ещё что то есть, о чём мне не известно!

   
 
 автор: Sergey89   (17.01.2007 в 14:38)   письмо автору
 
   для: Diablo_   (17.01.2007 в 14:14)
 

Нет. Между include и include_once только одно отличие.

   
 
 автор: errinea   (17.01.2007 в 14:51)   письмо автору
 
   для: Diablo_   (17.01.2007 в 14:14)
 

ну еще можно на некоторых серверах скрыть ошибки этой функции,
примерно так @include ("myfile_inc.php"); хотя все ранее изложенное верно

   
 
 автор: Sergey89   (17.01.2007 в 15:03)   письмо автору
 
   для: errinea   (17.01.2007 в 14:51)
 

А вот так лучше не делать, т.к. тогда на экран не выведутся внутренние ошибки подключаемого файла.

   
 
 автор: golovdinov   (17.01.2007 в 15:28)   письмо автору
 
   для: Sergey89   (17.01.2007 в 15:03)
 

А есть разница в скорости???

   
 
 автор: cheops   (17.01.2007 в 15:31)   письмо автору
 
   для: golovdinov   (17.01.2007 в 15:28)
 

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

   
 
 автор: Sergey89   (17.01.2007 в 15:37)   письмо автору
 
   для: golovdinov   (17.01.2007 в 15:28)
 

Впринципе, разницы быть не должно, т.к. функции работают идиентично. За исключение того, что *_once проверяет загружался файл или нет.

   
 
 автор: cheops   (17.01.2007 в 15:29)   письмо автору
 
   для: Diablo_   (17.01.2007 в 12:57)
 

Существует по два варианта конструкций include и require:

include 
include_once 
require 
require_once

Все они позволяют включить в скрипт код или текст из другого файла. Суффикс once позволяет включить файл только один раз, сколько бы вызовов не осуществлялось - это удобно, когда во включаемом файле имеется определение фукнций, так как повторное их определение приведёт к ошибке.
Сами по себе include и require отличаются способом реакции на отсутствие включамого файла. Если файла нет include генерирует предупреждение, но работа основного скрипта продолжается, require при отсутствии включамого файла останавливает работу скрипта.

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=490

   
 
 автор: Diablo_   (17.01.2007 в 15:55)   письмо автору
 
   для: cheops   (17.01.2007 в 15:29)
 

если разницы никакой и всё нормально, то вы мне можете объяснить, откуда берётся нагрузка на CPU по 5%-12%?
И я знаю точно что ошибка или недочёт, именно в этом файле!
Вот тема, в котором приведён скрипт!
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=30892&page=1

   
 
 автор: Sergey89   (17.01.2007 в 15:59)   письмо автору
 
   для: Diablo_   (17.01.2007 в 15:55)
 

Если на локально машине 5-10%, то это фигня. У меня один скрипт на 100% грузил локалмашин, а на серваке тока 40% =))

   
 
 автор: cheops   (17.01.2007 в 16:05)   письмо автору
 
   для: Diablo_   (17.01.2007 в 15:55)
 

>откуда берётся нагрузка на CPU по 5%-12%?
Хм... вообще без нагрузки скрипт выполняться не может - сколько-то нагрузки он создавать будет.

   
 
 автор: Diablo_   (17.01.2007 в 16:15)   письмо автору
 
   для: cheops   (17.01.2007 в 16:05)
 

ну понятно что он создаёт нагрузук :)))))))
но на серваках, выделенных хостенгах, допустимо не более 3% нагрузки на CPU а у меня иногда аж в 5 раз больше! Мне кажется что это не нормлаьно!

   
 
 автор: Sergey89   (17.01.2007 в 16:21)   письмо автору
 
   для: Diablo_   (17.01.2007 в 16:15)
 

И что такого? У меня дома во время генерации простой картинки нагрука доходит до 100%! На хостенгах всё совсем не так ;) Там вам просто больше 3% не разрешат превышать в течении долгого времени.

   
 
 автор: XPraptor   (17.01.2007 в 16:22)   письмо автору
 
   для: Diablo_   (17.01.2007 в 16:15)
 

Ну не знаю каким это макаром можно в 3% уложиться. Если даже в два потока открыть файл, то уже за 5% вылетит нагрузка. 5-12 это очень низкая нагрузка, и вполне объяснимая. Плюс к тому, что на локале вам в нагрузку еще и MySQL учитывается, а нахосте они по разным машинам стоят (чаще всего) и нагрузка делится. Ваши операции сс MySQL тоже нормальную нагрузку дадут при выполнении. Так что не берите в голову, а лучше оптимизируйте код для уменьшения текста и гладкости выполнения.

   
 
 автор: Diablo_   (17.01.2007 в 16:34)   письмо автору
 
   для: XPraptor   (17.01.2007 в 16:22)
 

1. знал бычто там и как оптимизировать, сделал бы! Если не сложно подскажите или хоть намекните в какую сторону смотреть!
2. дело в том, что там нагрузка считается та, которая идёт если не ошибаюсь, в течение 15 минут!

   
 
 автор: Sergey89   (17.01.2007 в 16:52)   письмо автору
 
   для: Diablo_   (17.01.2007 в 16:34)
 

запусти свой скрипт и посмотри, у тебя есть нагрузка в 10% в течении 15 минут? =)

   
 
 автор: Diablo_   (17.01.2007 в 16:57)   письмо автору
 
   для: Sergey89   (17.01.2007 в 16:52)
 

у меня то нету!!! но на сервакето есть! может быть, а даже и скорее всего, это из-за поисковиков

   
 
 автор: cheops   (18.01.2007 в 01:20)   письмо автору
 
   для: Diablo_   (17.01.2007 в 16:15)
 

Типичный сервер очень отличается от типичной домашней машины... Например, любая самая мощная персоналка имеет одну шину на материнской плате, а сервер зачастую три. Подсистема дискового ввода-вывода на сервере тоже очень сильная, процессоры ствят заточенные под мат.вычисления, а не под графику. Я когда свою (в общем не слабую) машину сравнивал с нашим сервером по производительности - только репу чесал... в общем у меня не осталось вопросов, почему разница в стоимости персоналки и сервера может достигать 6 раз.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования