1. Да, Вы правы.
2. Я не умею этого делать, как Вы посоветуете поступить?
Извините, все нашел ('simple mysql wrapper')
спасибо.
Позвольте еще один вопрос, пожалуйста, он больше относится к "правильности" работы с сервером MySQL.
Очередная версия программы собрана и работает, вылезла такая проблема:
Я прописал установку соединения непосредственно перед выполнением операции с таблицей и закрытие соединения сразу после.
При наложении эксперта на большое количество графиков ( в данный момент 20, в готовой версии нужно больше ) при очередном апдейте выскакивает пара-тройка ошибок типа "..lost connection to server", "..MySQL server gone away", то есть сервер не справляется с очередью запросов на коннект.
Если соединение с сервером делать в init(), а дисконнект в deinit() - все прекрасно работает, но меня смущает, что я держу кучу открытых коннектов к серверу.
Чем это чревато, как сделать правильно?? Вариант "разбить общую очередь на группы с дополнительными задержками" наверное пройдет, но не очень "красив".. Я уверен, что можно сделать правильнее.
И еще один вопрос - в мануале MySQL рекомендуется использовать конструкцию mysql_library_init() {код} mysql_library_end() для корректной работы с выделяемой памятью. Ни в одном из приведенных на форуме примеров этого нет. Имеет смысл поправить?
Спасибо за помощь!!
Я все же считаю, что рациональней и правильней делать подключение к СУБД в init() и отключение в deinit(). Ибо операции коннекта/дисконнекта дорогие по времени и нагрузке на ресурсы сервера. Прикиньте, что будет, если у вас будут постоянно апдейтиться, допустим, 50 графиков и с каждым апдейтом будет логин+логаут.
Да, я про это даже читал недавно - что при работе транзакциями параметры соединения лучше хранить в памяти сервера, а не каждый раз дропать/устанавливать.
Беда в недостатке знаний - я представляю, как это сделать через MySQL /NET Connector, но не через библиотечный вызовы из МТ
В целом на данный момент устраивает все, кроме того, что графики после установки эксперта нельзя трогать - пре переинициализации эксперта МТ падает с крэшлогом по понятной причине.
Ладно, пока остановлюсь на том что есть и буду копать дальше. Спасибо!!!
Если соединение с сервером делать в init(), а дисконнект в deinit() - все прекрасно работает, но меня смущает, что я держу кучу открытых коннектов к серверу.
Аналогично, может есть способ указать советнику использовать соединение, установленное другим советником?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
'TicksInMySQL'
Тут код эксперта, позволяющий писать из МТ данные ( в этом примере тики real-time ) в базу MySQL. Я немного переделал код, теперь он собирает бары заданного интервала, но мне хочется добавить функцию заполнения "дыр" по простому алгоритму:
- перед апдейтом таблицы взять из нее время предыдущей записи, сравнить с текущим, добавить в базу нужное количество строк.
Для этого нужно не только передавать в MySQL query на исполнение, но также иметь возможность оперировать с возвращаемым результатом, если таковой имеется.
Проблема в том, что нужные функции из libmysql.dll возвращают структуру MYSQL_RES ( например, mysql_store_result() http://dev.mysql.com/doc/refman/5.1/en/c-api-function-overview.html ).
Как это сделать или обойти???
Заранее огромное спасибо,
Сергей.
ЗЫ в аттаче код сборщика без этой проверки.