"PHP" / Говнокод #5688 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
public static function perform($table, $data, $action = 'insert', $parameters = '') {
		reset($data);
		if ($action == 'insert') {
			$query = 'INSERT INTO ' . $table . ' (';
			while (list($columns, ) = each($data)) {
				$query .= $columns . ', ';
			}
			$query = substr($query, 0, -2) . ') values (';
			reset($data);
			while (list(, $value) = each($data)) {
				switch ((string)$value) {
					case 'now()':
						$query .= 'NOW(), ';
						break;
					case 'null':
						$query .= 'NULL, ';
						break;
					default:
						$query .= '\'' . mysql_escape_string($value) . '\', ';
						break;
				}
			}
			$query = substr($query, 0, -2) . ')';
		} elseif ($action == 'update') {
			$query = 'UPDATE ' . $table . ' SET ';
			while (list($columns, $value) = each($data)) {
				switch ((string)$value) {
					case 'now()':
						$query .= $columns . ' = NOW(), ';
						break;
					case 'null':
						$query .= $columns .= ' = NULL, ';
						break;
					default:
						$query .= $columns . ' = \'' . mysql_escape_string($value) . '\', ';
						break;
				}
			}
			$query = substr($query, 0, -2) . ' WHERE ' . $parameters;
		}

		self::request($query);
	}

Вот так у нас вставляют в базу :)

Запостил: wmmorgun wmmorgun, (Updated )

Комментарии (11) RSS

  • Это вы называете "вставляют"? Онанисты какие-то...
    Ответить
    • Там везде сплошной онанизм.
      В логике записи статистики проверяется заходили ли сегодня более 10 раз, и если не заходили, то пишет новую запись. Весь цимес в том, что она не чистится и там скопилось 15млн записей, помимо этого каждая запись имеет свой уникальный id и еще два некислых составных ключа, размер индекса перевалил за 800Мб, а делается данная проверка ~20000 раз в сутки после чего ~15000 раз делается инсерт. Вот где онанизм.
      Ответить
      • Как недавно выразился не помню кто из местных комментаторов, благодаря этим людям мощность вычислительной техники неумолимо движется вперёд...
        Ответить
      • Каждая запись имеет свой уникальный ID? Оооо вы удивляете, а я думал дурак что ключ у материала ставить не надо xDDD
        Разумеется подъебал))) Там наверное даже имя есть? Ну вы монстер)))
        Ответить
        • Посмеялись и хватит.
          Это таблица статистики (<name>_hits) посещения страниц одного из разделов, которая состоит из полей: id, hit_time, ip, affiliate_id, land, и <name>_id. Зачем там унимальный ID? В access.log-ах без этого обходятся... Помимо уникального id, есть еще 2 ключа "<name>_id" и составной affiliate_id, <name>_id, ip, hit_time.
          А теперь объясните зачем это в таблице накопления данных, которые должны агрегироваться и чиститься раз в сутки?

          P.S. Кстати по обновленной статистике запрос на количество заходов за сегодня с уникальной айпишки выполяется всего-то 70000 раз в сутки.
          Ответить
  • Слушайте а автор этого чуда кажется мало чтото сброс делал переменной $data, тут надо лучше через строчку сбрасывать а то мало как то)))))
    Мне кажется автору необходимо почитать документацию по СУБД)))
    Ответить
    • Вы что, автор из себя весь умный-преумный, учил нас как надо экономить байты в бд, обрезая индексам размер до smallint... Типа если превысим, то увеличить не фиг делать.
      Естественно выигрыша на 65К записей никакого, а потом (товарищ давно не работает с нами) появились глюки, к нам посыпались запросы что не фига не работает, долго копались, оказалось размера не хватило. Вывод, сэкономленные килобайты - ничто против несколько-часового "лежания" сервиса, потраченных нервов и времени команды.
      Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8