Загадка на миллион баксов
2989 сообщений
#15 лет назад
Цитата ("Lisio"):Удачи вам в поисках заказчиков.
Спасибо

Кстати ни один из Ваших примеров у меня, например, никаких глюков не вывел. Отработали как часы.
601 сообщение
#15 лет назад
Видимо баг в работе интерпретатора. Налицо ошибки в работе с памятью. Работу интерпретатора PHP даже не представляю, может это использование совместно с каким-то приложением сказывается. Кстати, что за версию вы используете?(Lisio и Sassoft). Один из недостатков PHP - отсутствие возможности работать с памятью напрямую. Отсюда и получается такая вот "мистика"... Поэтому переходим на D - там таких проблем быть не может)
1172 сообщения
#15 лет назад
PHP Version 5.3.2-1ubuntu4.2Потому и полез сразу оперативку проверять, но проверка показывает, что с памятью все ок. И такой косяк возникает только в одном месте.
2989 сообщений
#15 лет назад
Цитата ("dervinar"):Один из недостатков PHP - отсутствие возможности работать с памятью напрямую.
Не такой уж это и недостаток. Мне уже приходилось исправлять (правда не в php

601 сообщение
#15 лет назад
Цитата ("elosoft"):Не такой уж это и недостаток. Мне уже приходилось исправлять (правда не в php ) результаты некоторых любителей без всякой надобности распределять память в приложениях ручками. Да только ручки их видно кривоватые были. То после выгрузки приложения метры не очищенной памяти остаются, то приложение само свои же данные убивает. Это не так примитивно, как кажется.
В нормальных языках программирования это хотя бы можно делать) В PHP при любых проблемах с памятью приходится заявлять "баг интерпретатора".
2989 сообщений
#15 лет назад
Цитата ("dervinar"):В нормальных языках программирования это хотя бы можно делать) В PHP при любых проблемах с памятью приходится заявлять "баг интерпретатора".
Ну вроде как обещали в будущем ввести возможность работы с памятью. А пока можно считать "издержками производства".
А глюков, собственно, в любых языках предостаточно...

1172 сообщения
#15 лет назад
Так и придется кодить этот скрипт прямо на сервере, там хоть работает нормально. Жду следующего релиза под убунту.
1172 сообщения
#15 лет назад
Так в последнем примере их и нет. Проблема возникает строго после очередного запроса в базу. Причем даже если написать mysql_query('SELECT id FROM table LIMIT 1'
137 сообщений
#15 лет назад
Lisio, напрасно вы так. elosoft, между прочим прав. Вы бы не писали так уверенно о скриптовых языках, интерпретаторах, если до конца не разбираетесь в этом.
1172 сообщения
584 сообщения
#15 лет назад
Что выводит, до и после unset?
echo gettype($temp1);
echo gettype($temp2);
и так пробовали:
unset($temp1); $temp1=NULL;
unset($temp2); $temp2=NULL;
$temp1='бред';
$temp2='собачий';
echo $temp1;
die;
1172 сообщения
#15 лет назад
echo '--------------<br />';
echo gettype($temp1).'<br />';
echo gettype($temp2).'<br />';
echo '--------------<br />';
unset($temp1);
unset($temp2);
echo gettype($temp1).'<br />';
echo gettype($temp2).'<br />';
echo '--------------<br />';
$temp1=NULL;
$temp2=NULL;
echo gettype($temp1).'<br />';
echo gettype($temp2).'<br />';
echo '--------------<br />';
$temp1='бред';
$temp2='собачий';
echo gettype($temp1).'<br />';
echo gettype($temp2).'<br />';
echo '--------------<br />';
echo $temp1;
die;
Ответ:
--------------
--------------
--------------
NULL
NULL
--------------
string
string
--------------
собачий
3240 сообщений
#15 лет назад
Интересная проблема, не сталкивался с таким.Возможно, поможет пролить свет вот что:
Вызовите var_dump($GLOBALS); до обращения к mysql_query(...).
Вызовите var_dump($GLOBALS); после обращения к mysql_query(...).
Вызовите var_dump($GLOBALS); до этого блока, что Вы привели в первом посте.
Вызовите var_dump($GLOBALS); после этого блока, что Вы привели в первом посте (но перед вызовом die, конечно).
Было бы очень интересно посмотреть результат.
1172 сообщения
#15 лет назад
Ушло в личку. Только после "обращения" и "до этого блока" - это одно и то же, в коде они идут один за другим.
3240 сообщений
#15 лет назад
Итог.Вроде совместными с Lisio усилиями разобрались. Это баг PHP 5.3.* (проверяли в 5.3.0 и в 5.3.2). В более ранних версиях PHP этого бага нет.
Если кому интересно, вот пример, можете повторить у себя локально:
<?php
a(0,$$var);
$temp1=1;
$temp2=2;
echo $temp1;
function a($b,$c) {}
Этот код выводит 2, хотя должен выводить 1.