Загадка на миллион баксов
1172 сообщения
#15 лет назад
unset($temp1);
unset($temp2);
$temp1='бред';
$temp2='собачий';
echo $temp1;
die;
Результат: "собачий".
Вопрос: wtf?
Upd: На другом сервере выдает "бред". Ресет не помогает. Сколько лет кодю, но такое впервые.
Upd: Memtest86+ показал, что оперативка полностью здорова.
2989 сообщений
#15 лет назад
Вообще-то убивать и тут же создавать переменные не корректно. Если это так уж надо, то нужно что-вроде такогоwhile(isset($temp1)) unset($temp1);
Убийством может заниматься и отдельный поток...
1172 сообщения
#15 лет назад
Я родом не из Индии, поэтому свой метод оставьте себе. Внутри одного треда инструкции исполняются последовательно.
2989 сообщений
#15 лет назад
Цитата ("Lisio"):Внутри одного треда инструкции исполняются последовательно.
И что с того? Вы полагаете все инструкции выполняются только после окончания выполнения предыдущей?
1172 сообщения
#15 лет назад
И если вы вдруг переписали исходники php и теперь у вас действительно уничтожение идет отдельным потоком, то вы попадаете в следующую ситуацию со своим циклом:1. Проверка, переменная есть
2. Отсыл команды на уничтожение в другой поток
3. Проверка, переменная все еще есть
4. Отсыл команды на уничтожение в другой поток
5. Проверка, переменная уничтожена
6. Создание новой переменной
7. Сработала вторая команда на уничтожение
8. Переменной нет
Но это только лишь ваши домыслы, слава богу в скриптах так кодить не нужно.
2989 сообщений
#15 лет назад
Цитата ("Lisio"):В php, без специального создания отдельных потоков вручную - да.
А при чем тут Ваши потоки в скриптах? Как выполнять такие вещи решает интепритатор php, и вряд ли он не использует дополнительные потоки.
зы Не видел последнее сообщение. Советую почитать как работают потоки.
1172 сообщения
#15 лет назад
Цитата ("elosoft"):А при чем тут Ваши потоки в скриптах? Как выполнять такие вещи решает интепритатор php, и вряд ли он не использует дополнительные потоки.
Вы имеете понятие о значение слова "скрипт"?
2989 сообщений
1172 сообщения
#15 лет назад
Я уже заметил, что вы это понятие имеете, причем во всех смыслах.Цитата ("elosoft"):
Не видел последнее сообщение. Советую почитать как работают потоки.
Посоветуйте это индусам, мне как-то своих познаний достаточно в области программирования.
2989 сообщений
#15 лет назад
Цитата ("Lisio"):Посоветуйте это индусам, мне как-то своих познаний достаточно в области программирования.
Я думаю индусы и без меня проживут. К тому же там еще и жарко.
Цитата ("Lisio"):
Я уже заметил, что вы это понятие имеете, причем во всех смыслах.
Вам бы тоже не мешало этим обзавестись.
1172 сообщения
11416 сообщений
1036 сообщений
#15 лет назад
unset($temp1);
unset($temp2);
$temp2='собачий';
$temp1='бред';
echo $temp1;
die;
Попробуйте так
1172 сообщения
#15 лет назад
unset($temp1);
unset($temp2);
$temp2='собачий';
$temp1='бред';
echo $temp1;
echo $temp2;
die;
Вывод: "бредбред"
2989 сообщений
#15 лет назад
Ладно Lisio, не кипятитесь. В паскале, в си, в бейсике, в javascript (другое сейчас на ум не пришло) создание и уничтожение переменных и объектов выполняется в отдельном потоке. Интерпритатор PHP я не копал, чесно признаюсь, но не думаю, что он устроен глупее других.
1172 сообщения
#15 лет назад
elosoft, а каким боком вообще си, бейсик и паскаль относятся к скриптовым языкам?
1172 сообщения
#15 лет назад
А теперь акробатика:$temp1asldjflsakjdflk='';
$temp2lafkdjsflkajsdlfkj='';
$temp1='бред';
$temp2='собачий';
echo $temp1asldjflsakjdflk;
echo $temp2lafkdjsflkajsdlfkj;
die;
Выводит: "собачийсобачий"
Ни одна из переменных нигде не использовалась, названия набраны вообще от балды.