Встряну боком.
Scala, не кипятись, race conditions для веба (в основном) — это как магнит для диэлектрика. При желании разрулить можно, memcached тут ни при чем. Грамотный человек знает про shmem, семафоры и сигналы. И прекрасно себе понимает что никаких потоков, но почти чистый IPC.
Решение интересное, но (как всегда) подходить к этому стоит с головой =) Нужно держать в голове, что при использовании подобного подхода при интенсивных вычислениях вы на ровном месте получаете пенальти — это медленнее обычного использования на порядок.
Код test.php
// определения классов Object и Rectangle
<...>
// Стандартный аналог
class Rectangle2
{
public $width = 400;
public $height = 1;
public function getArea(){
return $this->width*$this->height;
}
}
$iterations = 10000;
echo "Let's perform $iterations simple iterations!\n";
$r = new Rectangle();
$t = microtime(true);
for ($i = 0; $i < $iterations; ++$i) {
$r->height++;
$r->height - $r->width - $r->area;
}
echo "Advanced class took ".round($res = microtime(true) - $t, 3)." sec\n";
$r = new Rectangle2();
$t = microtime(true);
for ($i = 0; $i < $iterations; ++$i) {
$r->height++;
$r->height - $r->width - $r->getArea();
}
echo "Standard class took ".round($res2 = microtime(true) - $t, 3)." sec\n";
echo "Difference: ", round($res/$res2, 2), " times!\n";
Результаты:
$ php test.php
Let's perform 10000 simple iterations!
Advanced class took 1.323 sec
Standard class took 0.102 sec
Difference: 13.03 times!
Так что вот так.
PS: Ну и, разумеется, преждевременная оптимизация — корень всех зол (с) противоположность пряника
Беда «волшебных» методов и динамических свойств/констант в том, что нет еще ни одной IDE, которая могла бы их понимать и помогать подстановками. Часто из-за досадной очепятки приходится тратить массу времени на поиск неуловимого глюка. Но идея хорошая.
Бывает так, что другого выхода нет. Я согласен, что если это делать, то делать это нужно быстро (в рамках закона), а готовиться к этому задоооооолго до первых увольнений. Быстро - это значит "я, владелец фирмы/управляющий/директор, принял решение о том, что ты будешь уволен. Вот твои бабки, вот твой N-недельный оплачиваемый отпуск (N >= 2). Отпуск начинается сейчас.". Разумеется, это выжимка из тирады типа "мы решили, сам понимаешь, компания не может, тебе надо двигаться дальше" и т.п.
Но, чтобы это стало возможным, надо быть готовым - бэкапы, disaster recovery procedure, тренировки по восстановлению, списки доступа, ключи и прочая, прочая.
К сожалению, увольнение часто похоже на развод ненавидящих друг друга супругов, так что при наличии подобного "брачного контракта" все проходит с меньшими потерями для обоих сторон. Имел опыт как с одной, так и с другой стороны =(
У моей знакомой есть сын 14-ти лет. Насмотревшись на то, что я творю с компьютером и наслушавшись моих рассказов о том как биты превращаются в байты, а те складываются в слова, которые понимает Машина он сказал, что хочет стать программистом как я =) Я не видел его пару лет после этого. Недавно встретились случайно и он спросил "а как стать программистом, куда идти учиться, кто покажет мне КАК это делается?". Я завис минут на десять и не смог ему ответить кроме как "самый лучший учитель - это ты. Лучший вопрос - который задан. Попробуй поставить линукс" =)
Ну правда, нет у меня рецепта =) Думал потом об этом. Кто меня научил? Где я ЭТОМУ научился? Память рисует мой первый РК, который так и не заработал, потому что я перегрел паяльником контроллер ввода/вывода. Спектрум и поросячий восторг после пары строк на асме, которые сдвигали верхнюю часть растрового шрифта делая его похожим на Star Wars =) Книжки всякие.. Ненависть к лабораторным в инсте, на которых мы "изучали Norton Commander" и решали тупые задачи на ТрубоПаскакали.
Э-эх... Ностальжи..
sleep()
используйusleep()
. Так оно кошернее.Scala, не кипятись, race conditions для веба (в основном) — это как магнит для диэлектрика. При желании разрулить можно, memcached тут ни при чем. Грамотный человек знает про shmem, семафоры и сигналы. И прекрасно себе понимает что никаких потоков, но почти чистый IPC.
Код test.php
Результаты:
Так что вот так.
PS: Ну и, разумеется, преждевременная оптимизация — корень всех зол (с) противоположность пряника
Мне больше по душе указанный выше ZF Coding Standard (то есть, #1 из топика), но и PEAR'овский тоже не плох.
И еще раз соглашусь с однохабрянами выше — на фигурных скобках экономить грЕшно.
PS: в Zend Studio / Eclipse PDT шикарный форматер кода (Shift-Ctrl-F). Шикарность — в его гибчайшей и обширнейшей настройке.
Но, чтобы это стало возможным, надо быть готовым - бэкапы, disaster recovery procedure, тренировки по восстановлению, списки доступа, ключи и прочая, прочая.
К сожалению, увольнение часто похоже на развод ненавидящих друг друга супругов, так что при наличии подобного "брачного контракта" все проходит с меньшими потерями для обоих сторон. Имел опыт как с одной, так и с другой стороны =(
ЗЫ: PHPSecAudit примерно то же что и Code Inspector в Zend - дискредитирует себя после ругани на тривиальный
while ($row = mysql_fetch($res));
.Ну правда, нет у меня рецепта =) Думал потом об этом. Кто меня научил? Где я ЭТОМУ научился? Память рисует мой первый РК, который так и не заработал, потому что я перегрел паяльником контроллер ввода/вывода. Спектрум и поросячий восторг после пары строк на асме, которые сдвигали верхнюю часть растрового шрифта делая его похожим на Star Wars =) Книжки всякие.. Ненависть к лабораторным в инсте, на которых мы "изучали Norton Commander" и решали тупые задачи на ТрубоПаскакали.
Э-эх... Ностальжи..