|
|
|
|
|
для: BinLaden
(17.02.2009 в 22:16)
| | Ладно я так понял никто не поможет, пошел копать исходники...
...
Нашел интересный коммент:
Optimized require_once() and include_once() by eliminating fopen(3) on second usage
....
....
...........
похже нашел:
switch (Z_LVAL(opline->op2.u.constant)) {
case ZEND_INCLUDE_ONCE:
case ZEND_REQUIRE_ONCE: {
zend_file_handle file_handle;
if (IS_ABSOLUTE_PATH(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename))) {
cwd_state state;
state.cwd_length = 0;
state.cwd = malloc(1);
state.cwd[0] = 0;
failure_retval = (!virtual_file_ex(&state, Z_STRVAL_P(inc_filename), NULL, 1) &&
zend_hash_exists(&EG(included_files), state.cwd, state.cwd_length+1));
free(state.cwd);
}
if (failure_retval) {
/* do nothing */
} else if (SUCCESS == zend_stream_open(Z_STRVAL_P(inc_filename), &file_handle TSRMLS_CC)) {
if (!file_handle.opened_path) {
file_handle.opened_path = estrndup(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename));
}
if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
zend_destroy_file_handle(&file_handle TSRMLS_CC);
} else {
zend_file_handle_dtor(&file_handle);
failure_retval=1;
}
} else {
if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) {
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename));
} else {
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename));
}
}
}
break;
case ZEND_INCLUDE:
case ZEND_REQUIRE:
new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC);
break;
|
| |
|
|
|
|
|
|
|
для: STEVER
(10.02.2009 в 22:38)
| | PHP в основе имеет СИ, и открывая файл эксклюзивно (открывая, а неоябязательно считывая, это разные вещи), вы не сможете более открыть это файл еще раз. Т.е. если указатель на файл уже инициализирован, то будет использоваться он, а не инициализироваться другой. | |
|
|
|
|
|
|
|
для: STEVER
(17.02.2009 в 20:03)
| | Прежде чем перечить кому-то сам наберись немного знаний, хорошо?
Обязательно. | |
|
|
|
|
|
|
|
для: Loki
(17.02.2009 в 22:11)
| | Было бы интересно взглянуть. Я не видел. | |
|
|
|
|
|
|
|
для: BinLaden
(17.02.2009 в 20:12)
| | >В "доках", по-моему, такое не указывают. Надо в исходники смотреть.
Где как: насколько я помню в доках по mysql есть раздел где описываются алгоритмы, для лучшего понимания. Возможно и в PHP есть подобное, если достаточно глубоко копнуть:) | |
|
|
|
|
|
|
|
для: STEVER
(17.02.2009 в 20:05)
| | В "доках", по-моему, такое не указывают. Надо в исходники смотреть.
> Trianon, утверждает что файл считывается(на сколько я понял образ файла?)
Считать и считывать -- вроде разные глаголы... | |
|
|
|
|
|
|
|
для: BinLaden
(11.02.2009 в 00:05)
| | Благодарю за ответ, а ссылочки на док нет?
Trianon, утверждает что файл считывается(на сколько я понял образ файла?) | |
|
|
|
|
|
|
|
для: AcidTrash
(10.02.2009 в 22:45)
| | "интересно, а зачем вам такой интерес?" - это типа "вы не отвечаете на мой ответ"?
"А по какому принципу, например компилятор определяет где ошибка?" - эх, компилятор ты мой дорогой. Прежде чем перечить кому-то сам наберись немного знаний, хорошо? | |
|
|
|
|
|
|
|
для: STEVER
(10.02.2009 в 22:38)
| | PHP запоминает хеши абсолютных путей к файлам | |
|
|
|
|
|
|
|
для: STEVER
(10.02.2009 в 22:45)
| | - | |
|
|
|
|