Вот готовый вариант если еще нужен. Только стоит учитывать что числа должны располагаться отдельно от других слов (то есть с пробелами а не слитно со всем текстом). Должно работать.
Через global в функию передаются элементы, которые нужно отфильтровать (в вашем же случае ничего не работало, потому что функция odd не знала ни про какой массив $qwerty - для нее он был локальным), потом применяем функцию ко всем элементам исходного массива. Кроме того у вас id почему-то является строковой переменной: '3093' вместо 3093, поэтому элементы приводятся к целочисленному типу (int).
Здравствуйте!
Вот такой вопросец. Мне надо проверить есть ли в файле все числа от 1 до 30. Они могут быть в разброс. Как понимаю регулярным выражением надо. Или как-то иначе? Если регулярным не подскажите как примерно писать.
,(с ней еще поиграться нужно потому что я не спец по регекспам) но если надо проверить есть ли в файле все числа, то наверное нужно ее применить к каждой строке а потом сравнить с эталонным массивом (в котором находятся числа от 1 до 30) и если все значения из эталонного массива есть в конечном то задача выполнена - все числа нашлись.
Суть такова: пользователь загружает файл на обработку, и если обработка уже идет то файл ставится в очередь. Я так понимаю, что для этого нужно в памяти держать скрипт, который, например каждую минуту будет опрашивать бд и смотреть есть ли там новые задачи. Но может есть способы проще и/или эффективнее (сервер на вин).
Не могу подключиться к серверу из-за этой ошибки. Можно ли как-нибудь отключить проверку подлинности сертификата? Вообще какая-то странная библиотека - подключения не произошло а скрипт продолжает висеть (по таймауту не отключается ). И документации по ней мало.
Поставьте xdebug, включите профилирование и посмотрите потом в kcachegrind'е где и сколько времени тратите.
Всяко полезнее будет, чем тыкать пальцем в небо "наверное, медленно с диска читается"
С точки зрения системного апи - да, получение дескриптора файла на чтение каждый раз новое.
Вот только это не имеет ничего общего с обращением к физическому диску - это на усмотрение ОС. Дисковый кэш уже давным-давно реализован. При чтении блока, этот блок сохраняется в RAM, последующие запросы на чтение этого блока обрабатываются уже напрямую из RAM. Запись в файл, к слову, тоже осуществляется в памяти. На диск изменения (ака грязные страницы) сбрасываются через вызов fsync вручную или по таймеру или по достижении некоторого порогового числа этих грязных страниц.
PHP не экспортирует флаги вроде O_DIRECT. Поэтому, если только файл в принципе помещается в память и достаточно часто используется - с диска он читается только один раз.
А это можно как-то экспериментально проверить - читается ли он один раз или при каждом вызове fopen?
Если файл только читается - он и так с диска читается только при первом обращении, затем из памяти.
емнип, даже под виндами дисковый кэш работает.
Там, вроде каждое обращение к геоип базе это открытие файла заново. И в общем-то интересно, как бинарный файл в память загрузить для работы. По теме ничего особо толкового не нашел.
Есть api jот геоип, который ищет в файле информацию по определенному ип. Но с диска все это происходит очень медленно. Вопрос вот в чем: можно ли загрузить файл в память, чтобы к нему потому можно было обращаться как к обычному файлу (читать, писать и тд). Файл бинарный. Спасибо.
Нужно обработать большой файл, посмотреть некоторые данные в строках и если нужно, добавить записи в бд. Как можно ускорить работу? Я так понимаю нужно использовать многопоточность и pthreads?
В $key у вас имя переменной, в $value её значение. Вот и проверяйте наличие значения 1 раз.
Я понимаю, я же сказал что проблема именно в составлении запроса а не в получении переменных: если есть параметр и он идет первым, то сначала дописываем where, а если параметр не первый то пишем and, а если параметров нет то условие не дописываем. Да, и условия для разных переменных разные, где-то просто сравнение where text_param=value а где-то поиск по диапазону where num_param > value1 and num_param < value2. Я примерно представляю как это сделать, но хотелось бы знать как такое на практике реализуют и какие способы есть. Может пример приведете если не трудно?
Нет, задача не совсем в этом. Нужно на основе того какие параметры выберет пользователь составить запрос. Например захотел он чтобы в запросе были все записи не позднее какой-то даты, соответственно в запросе добавилось "where lastdate > user_param_data", а если ему нужно выбрать по определенному городу то where city="user_selected_city". В первом посте я пример привел. То поля и условия, которые будут в запросе составляются пользователем. Так понятней должно быть.
ещё раз вдумчиво перечитайте свой вопрос и мой ответ.
Я перечитал. Основная проблема как-раз в "подставлянии". Узнать, допустим, есть ли условия для выборки чтобы добавить в результирующую строку where это несложно. Но потом нужно определять если параметр первый в выборке, то and не дописывать в него. Получается что нужно много условий. И чем больше параметров тем больше условий городить. То есть пользователь может вообще никаких параметров не выбирать, а может выбрать только некоторые из них и исходя из этого нужно составить запрос с условиями.