Я бы ещё добавил, что лучше когда разработчики работают на своём локальном сервере (поднять апач+ что угодно локально - не проблема обычно), и общий сервер используют для тестов.. а не для разработки
увеличивает скорость разработки на порядок:
1. нет задержки в "закачал на сервер, ждёшь обновления"
2. есть куча возможностей аля xDebug, любые клиенты, редакторы и тп.
1. браузер - только один из способов. Можно запускать напрямую через редактор, надо только настроить правильно его. (Настраивать - у вас выпадающее меню под словом window. там test.ru - настройте там.)
Вопрос больше - а как вы укажете шторму, какой из скриптов вы хотите запускать, и с какими GET/POST/Session/Cookie параметрами?
Я обычно использую настройку запуска не из браузера для CLI скрипттов.
Вариант2: нажимаете правой кнопкой мыши на скрипт который вы хотите запустить и Debug
-> дальше запускаете кнопкой Debug под словом windows на скрине. (там Run и Debug)
2. на шаг назад - по стеку ?
всё есть.
У вас на скрине переключитесь на закладку дебаггер
там подзакладки: Watches, Frames, Variables.
Frames- как раз таки call stack.
На закладке Variables - список всех переменных, в том числе глобальных и тп.
Владимир Шикльгрубер: ну, обычным циклом - мало что значит фраза. Можно обычным циклом делать сверхсложные манипуляции с DOM, что даже на топовых компах браузер будет тормозить :)
Mrrl: не понял, почему в вашем примере нужно чем то жертвовать :)
можно сделать так:
1. функция которая читает модель
2. функция которая считаетывает координаты точек по сложным формулам
3. считаем пересечения
3. функция в которую передаёте п1 и п2 и оно считает только площадь, на основе данных
3. функция в которую передаёте п3 и п4 и оно считает только объём на основе данных
+ если нужно, можно написать функцию "управленец", в которую передаёшь все нужные параметры (в том числе - откуда читать из файла, что считать, по какому алгоритм и тп)
При этом, пункты 1-2-3 можно (даже нужно) инкапсулировать в отдельный объект, и чтобы данные считались по нужде, сохранялись в локальном кеше.
Это если говорить про то, как "правильно писать" (хотя опять же - дело вкуса) .
Иногда правда нужно писать не правильно, а быстро - тогда совсем другой вопрос :)
zaartix: решение простое - создавать такие ключи, которые точно говорят фразу. Если сообщение вида error_no_user_found , то это всегда значит "пользователь не найден", а не так что иногда "клиент не найден".
Urukhayy: takeMoney ни в коем случае не должна выводить пользователю сообщение.
Если нужно, можно так сделать:
$result = takeMoney(100);
printTakeMoneyResult($result);
или даже так:
printAndTakeMoney(100);
function printAndTakeMoney($amount){
$result = takeMoney(100);
printTakeMoneyResult($result);
}
это если очень хочется.
Т.е. всегда нужно разделять код отвечающий за работу с изменением данных, и с выводом данных пользователю.
Всегда будет 1 или 2 момента, когда надо просто снять деньги, но ничего выводить не нужно.
Игорь Воротнёв: Не совсем понял что мы тогда обсуждаем, так как я абсолютно такого же мнения о механизмах буферизация, и в рамках данного вопроса - не стоял вопрос об оптимизации :) А наоборот стоял вопрос - почему nodejs быстрее.
Игорь Воротнёв:
То есть вы хотите сказать, что если выполнить так, в пхп:
mysql_query('SELECT * FROM dreg_document');
mysql_query('SELECT * FROM dreg_document');
то второй раз он возьмёт из кеша результаты ? :)
PS: мой оригинальный ответ/предположение был правилен, судя по всему. Автор вопроса пришёл к тому же результату.
cities2:
id city
7, Москва
делаете запрос:
UPDATE cities2 SET `id`='7', `city`='Иваново' WHERE `id` = 7
данные меняются, всё ок, изменена 1 строка
делаете повторно запрос:
UPDATE cities2 SET `id`='7', `city`='Иваново' WHERE `id` = 7
данные не меняются (хотя в остальном всё ок) - измено 0 строк
я про подобный сценарий
Т.е. вопрос - а надо ли вам точно знать что строки обязательно изменились ? :)