PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (792): В начало « ... 18 19 20 21 [22] 23 24 25 26 ... » В конец

> Найдено сообщений: 11869
Мелкий Отправлено: 19 Января, 2018 - 17:59:01 • Тема: Получить, обработать, записать - сложности • Форум: Работа с файловой системой и файлами

Ответов: 5
Просмотров: 2168
antobra пишет:
в logs.txt появляются дубли ID

И это если ещё везёт.
Реально можно повредить структуру строки, потерянная запись, частичная запись поверх и другие приключения.

antobra пишет:
Самое первое - это flock. Его проблема это блокировка файла на момент записи. С записью как раз проблем нет.

Читать последнюю строку с намерением что-то писать на её основе вы должны строго после взятия write flock.
fopen
flock write
fread
some calc
write
unlock
fclose

Если проблема со счётчиком - поставьте рядом redis. Атомарный инкремент там есть, да и сам по себе штук не бесполезный.
Если проблема не только со счётчиком, а ещё и хранением данных - то используйте знакомую вашей команде СУБД. У всех распространённых должны быть конкурентно-безопасные сиквенсы.
Мелкий Отправлено: 18 Января, 2018 - 09:44:12 • Тема: Постоянное подключение к SQL на странице • Форум: Вопросы новичков

Ответов: 5
Просмотров: 267
ГенералСиська пишет:
подвисали на несколько секунд

вот с этим и надо разбираться в первую очередь. Какая ОС? База на той же машине? какой хост указан в connect?

ГенералСиська пишет:
mysql_connect и mysql_select_db

А с этим разбираться во вторую очередь. 15 лет как заброшено, лет 5 как официально deprecated и уже года 3 как удалены из php.
Мелкий Отправлено: 10 Января, 2018 - 23:16:35 • Тема: Библиотека! • Форум: Вопросы новичков

Ответов: 3
Просмотров: 258
Что такое библиотека в вашем понимании, как в одном списке оказались персистентные и временные средства хранения и что можно советовать при полном отсутствии исходных данных, требований к решению и самих исходных задач?
Мелкий Отправлено: 10 Января, 2018 - 11:06:12 • Тема: Вопрос к опытным кодерам • Форум: Вопросы новичков

Ответов: 4
Просмотров: 263
Artix пишет:
htmlspecialchars() чтобы не было этих &lt; крякозябров а норм символы выводил с бд < ?

htmlspecialchars нужен потому что вы выводите не HTML в HTML и надо соблюдать правила вывода того формата, в который вы выводите. Чтобы случайной кавычкой не сломать в принципе всю страницу (и это в лучшем случае, в худшем - подставить ваших пользователей под XSS)
Мелкий Отправлено: 09 Января, 2018 - 23:03:04 • Тема: Вопрос к опытным кодерам • Форум: Вопросы новичков

Ответов: 4
Просмотров: 263
Artix пишет:
если теги не заполнены мы бд не дергаем лишний раз

$config - это объект класса с ArrayAccess, который умеет дёргать базу? Или за счёт чего экономия?
Впрочем, в таком случае empty запрашивает offsetExists + offsetGet, поэтому можно сделать даже хуже, смотря как реализовано.

Имя $config для хранения специфичных для каждой страницы keywords и description явно неудачная мысль. И забыли сделать htmlspecialchars при выводе в html
Ну а пустой keywords бесполезен, зачем его выводить?
Мелкий Отправлено: 06 Января, 2018 - 19:57:40 • Тема: Запустить script.php каждый день 1 раз • Форум: Вопросы новичков

Ответов: 1
Просмотров: 159
CODE (cron):
скопировать код в буфер обмена
  1. 0 11 * * * /usr/bin/php /home/mysite/mysite.ru/www/scripts/myscript.php

?
Вроде бы по синтаксису username допустимо указывать - а может только для системных кронов, я сходу не нашёл подтверждения - но рядовому пользователю рутовые права явно бы не дали.
Мелкий Отправлено: 04 Января, 2018 - 11:25:53 • Тема: Проблема с sql запросом • Форум: Вопросы новичков

Ответов: 15
Просмотров: 679
andrewkard пишет:
Если столбец устанавливается в его текущее значение, то MySQL замечает это и не обновляет его.

Это внутренняя оптимизация, не влияющая на результат запроса. Приложению всё равно будет рапорт об успешном выполнении запроса. (но affected_rows = 0, если верно помню)

Смотрите какую ошибку возвращает база: http://php.net/manual/en/mysqli.error.php
Так гадать бесперспективно
PS: код не смотрел
Мелкий Отправлено: 03 Января, 2018 - 17:07:11 • Тема: Проблема с sql запросом • Форум: Вопросы новичков

Ответов: 15
Просмотров: 679
Sail пишет:
Что ещё в этом сообщении пишет, после двоеточия?

А с чего вы решили, что должно быть двоеточие?
Я пока не вижу решительно никакого кода выполнения запроса и обработки ошибок. Вижу лишь подстановку переменных в структуру запроса - что весьма плохо само по себе в общем случае работы с СУБД, но что не является прямой ошибкой.
Мелкий Отправлено: 02 Января, 2018 - 15:14:11 • Тема: Как сверить 2 массивы и удалить одинаковые значения? • Форум: Хранение данных, их вывод и обработка

Ответов: 3
Просмотров: 991

?
Мелкий Отправлено: 01 Января, 2018 - 17:57:24 • Тема: Можно ли без php загрузить файлы на сервер? Например через JS ? • Форум: Программирование на PHP

Ответов: 1
Просмотров: 472
Можно. Да хоть через sh.
Если говорить о загрузке файлов через html элемент input type file - то клиенту всё равно как вы настроили свой веб-сервер и на каких языках у вас работает загрузка файлов. Есть запрос http переданный по tcp. Всё остальное на своём сервере можете менять.
Мелкий Отправлено: 29 Декабря, 2017 - 13:12:40 • Тема: Вопрос по limit и UNIQUE KEY • Форум: Вопросы новичков

Ответов: 13
Просмотров: 768
Строитель пишет:
моё утверждение о повышении производительности за счёт использования оператора LIMIT истинно? Или ложно?

Два случая:
0) если есть unique по тому что ищем - то лимит роли не играет (гхм, ну кроме limit 0 - эта замечательная вещь даже выполняться не будет, ответит 0 строк сразу на этапе разбора)
Но и вреда от limit 1 не будет.
1) если уникального ограничения нет - лимит играет свою роль и прерывает выполнение запроса сразу по достижении нужного числа совпадений. И планировщик может менять план опираясь на знание того что надо достать только часть строк. Что совпадает с наблюдениями, если MouseZver не докажет обратное.
Мелкий Отправлено: 29 Декабря, 2017 - 12:53:33 • Тема: O! $_FILES файл на сервер. • Форум: Вопросы новичков

Ответов: 3
Просмотров: 179
https://github[dot]com/php/php-src/b[dot][dot][dot]/rfc1867[dot]c#L1060 (php константа UPLOAD_ERR_CANT_WRITE - это UPLOAD_ERROR_F в C исходнике, объявление в начале файла)
Системный вызов write вернул ошибку либо отчитался что записал меньше байт, чем просили. Что именно из этого случилось - без пересборки PHP не понять, E_NOTICE закрыты макросами препроцессора.
Права и возможность создания файла при этом есть, это проверяется немного раньше и кидает E_WARNING в случае ошибки, содержимое файла до лампочки, его рассматриваем как набор байт.

В целом - проблема операционной системы. Может быть upload_tmp_dir был переполнен, может там лимиты на размер файла
Мелкий Отправлено: 29 Декабря, 2017 - 10:11:35 • Тема: Вопрос по limit и UNIQUE KEY • Форум: Вопросы новичков

Ответов: 13
Просмотров: 768
MouseZver, а я и не путаю.
Имеющийся limit мало того, что не будет перебирать все совпадающие строки (за ненадобностью) - так ещё и может использовать вообще другой план запроса (основные моменты указаны в мануале, на который я сослался).

CODE (sql):
скопировать код в буфер обмена
  1. mysql> SELECT SQL_NO_CACHE * FROM bigtable WHERE i = 5435;
  2. +------+------+
  3. | id   | i    |
  4. +------+------+
  5. | 5435 | 5435 |
  6. +------+------+
  7. 1 row IN SET (0.11 sec)
  8.  
  9. mysql> SELECT SQL_NO_CACHE * FROM bigtable WHERE i = 5435;
  10. +------+------+
  11. | id   | i    |
  12. +------+------+
  13. | 5435 | 5435 |
  14. +------+------+
  15. 1 row IN SET (0.12 sec)
  16.  
  17. mysql> SELECT SQL_NO_CACHE * FROM bigtable WHERE i = 5435 LIMIT 1;
  18. +------+------+
  19. | id   | i    |
  20. +------+------+
  21. | 5435 | 5435 |
  22. +------+------+
  23. 1 row IN SET (0.00 sec)
  24.  
  25. mysql> SELECT SQL_NO_CACHE * FROM bigtable WHERE i = 5435 LIMIT 1;
  26. +------+------+
  27. | id   | i    |
  28. +------+------+
  29. | 5435 | 5435 |
  30. +------+------+
  31. 1 row IN SET (0.01 sec)
  32.  
  33. mysql> EXPLAIN SELECT SQL_NO_CACHE * FROM bigtable WHERE i = 5435 LIMIT 1;
  34. +----+-------------+----------+------+---------------+------+---------+------+---------+-------------+
  35. | id | select_type | TABLE    | type | possible_keys | KEY  | key_len | ref  | rows    | Extra       |
  36. +----+-------------+----------+------+---------------+------+---------+------+---------+-------------+
  37. |  1 | SIMPLE      | bigtable | ALL  | NULL          | NULL | NULL    | NULL | 1000379 | USING WHERE |
  38. +----+-------------+----------+------+---------------+------+---------+------+---------+-------------+
  39. 1 row IN SET (0.00 sec)
  40.  
  41. mysql> EXPLAIN SELECT SQL_NO_CACHE * FROM bigtable WHERE i = 5435;
  42. +----+-------------+----------+------+---------------+------+---------+------+---------+-------------+
  43. | id | select_type | TABLE    | type | possible_keys | KEY  | key_len | ref  | rows    | Extra       |
  44. +----+-------------+----------+------+---------------+------+---------+------+---------+-------------+
  45. |  1 | SIMPLE      | bigtable | ALL  | NULL          | NULL | NULL    | NULL | 1000379 | USING WHERE |
  46. +----+-------------+----------+------+---------------+------+---------+------+---------+-------------+
  47. 1 row IN SET (0.00 sec)
  48.  

Мяч у вас. Докажите своё высказывание и объясните, почему limit 1 прервал seqscan преждевременно. В табличке лям строк, искомый i где-то в начале.

Для уникального индекса это всё, естественно, не играет роли, т.к. планировщик изначально знает гарантированную селективность уникального ограничения.
Мелкий Отправлено: 29 Декабря, 2017 - 09:39:39 • Тема: Вопрос по limit и UNIQUE KEY • Форум: Вопросы новичков

Ответов: 13
Просмотров: 768
MouseZver пишет:
Запрос в любом случае просмотрит все записи подошедшие по критерию и только потом будет применен LIMIT 1

В общем случае утверждение неверно.
https://dev[dot]mysql[dot]com/doc/refman[dot][dot][dot]ptimization[dot]html
Мелкий Отправлено: 28 Декабря, 2017 - 15:50:09 • Тема: Вопрос по limit и UNIQUE KEY • Форум: Вопросы новичков

Ответов: 13
Просмотров: 768
Если есть уникальное ограничение и мы по нему ищем - то limit 1 бесполезен, т.к. планировщик и так знает, что по уникальному индексу не умеет смысла продолжать искать после первого совпадения.

rgl пишет:
лишняя работа, достаточно какое-нибудь одно поле

Есть большая разница между "какое-нибудь одно поле" и некоторое определённое поле.
Константу select 1 или выборка непосредственно полей по которым искали - допустимо использовать index only scan.
select primary_key_field - для mysql/innodb одно и то же, можно index only scan получить. Для других надо уточнять
выбор любого inline поля - надо идти читать его из таблицы
выбор external поля (большого text, например) - надо идти сначала в таблицу, затем ещё вычитывать отдельно лежащее содержимое этого файла

А для передачи данных для запроса - есть prepared statements. В mysql, впрочем, на редкость неудобные и лучше использовать pdo.
Подстановка данных в текст запроса должна настораживать сама по себе.

Страниц (792): В начало « ... 18 19 20 21 [22] 23 24 25 26 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB