А каким нибудь чудом используя ignore_user_abort() отправить пользователю данные и разорвать соединение со стороны сервера с успешным статусом + продолжить выполнение?
Пробовал, в результате основной скрипт все равно ожидает завершения второго...
Мелкий пишет:
Более удобное решение: ajax запрос пишет в очередь, воркер разгребает очередь и что-то делает. См. "сервер очередей", довольно распространённый паттерн для таких задач.
Спасибо, сейчас почитаю, но ситуация такая, что данное поведение требуется лишь при инициализации и всего для одного скрипта, надеялся что получится более просто реализовать.
И все равно сколько не гуглил ничего рабочего не нашел. еще раз повторюсь нужно при работе скрипта запустить второй и не дожидаясь его окончания продолжить и завершить выполнение первого, при этом второй должен отработать до конца
Добрый день, интересует как в отдельном потоке запустить другой php скрипт. пока нагуглить ничего рабочего не удалось.
Собственно задача состоит в том, что при отправке пользователем AJAX запроса необходимо обработать его и вернуть ответ, дополнительно запустив другой скрипт. Второй скрипт выполняется очень долго и не возвращает пользователю ни каких данных.
SELECT id, text FROMTABLEWHERE id >=(SELECT id FROMTABLEWHERE text='text')ORDERBY id ASCLIMIT2
была самой первой, но смутило то что в ответе мы получаем в 2 раза больше чем необходимо. Мне уже так же кажется, что быстрее, проще и понятнее будет оставить 2 запроса.
Доброго всем дня. Проблема в следующем, есть таблица поля которой id - первичный ключ с автоинкриментом и уникальное текстовое поле. нужно получить id по текстовому полю и выдать текстовое поле из следующей записи. в данный момент выглядит примерно так:
SELECT text FROMTABLEWHERE id ><ранее полученный id>ORDERBY id ASCLIMIT1
id текущей записи тоже необходимо получить для дальнейших действий
Возможно ли запихать все это в один запрос и будет ли это быстрее работать чем 2 отдельных запроса? Для работы с БД используется mysqli (Добавление)
upd. И как это лучше реализовать/оптимизировать? (Добавление)
upd2 и да, реализовать нечто подобное мне все же удалось:
SELECT id,(SELECTDISTINCT id FROMTABLEWHERE text ='text')AS old_id, text FROMTABLEHAVING old_id < id ORDERBY id ASCLIMIT1
Но:
1. если верить профилировщику mysql это работает медленне чем 2 отдельных запроса
2. присутствует лишний id следующей записи от которого мне так и не удалось избавиться.
В mysql не силен, поэтому просьба сильно не пинать.
значит он не нужен
распространенная ошибка новичков в ООП клепать "статические" классы
Согласен в большинстве случаев статические классы не нужны(есть опыт c++/c#) Вопрос был чисто теоритический.
LIME пишет:
TuX560 пишет:
доступ к полю есть только через геттер
сие невозможно
либо всё статика либо используются акцессоры
невозможно сделать закрытое свойство в статическом классе так как для закрытого свойства нужен инстанс
Об этом не подумал.
LIME пишет:
короче что надо сделать? подозреваю что ничего и вопрос чисто по теории
тогда совет просто начать писать и набить шишки
Абсолютно верно, мне пока в голову такое писать не приходило, а друг столкнулся с подобной ситуацией, захотелось разобраться.
Уверены, что 5.5, а не 5.6?
Некоторые типы вычислений разрешили в 5.6
Что удалось выпытать из друга) Решить ему решили путем инициализации в конструкторе, для него работает и ладно, а самому интересно стало. В текущей его версии php(пока не известна) даже при полном выводе debug - никаких ошибок/предупреждений не выдает, и работает вариант с инициализацией с использованием условного оператора.
PS: Вы кажется не объявили константу FOO
К сожалению у самого под руками только 5.6 поэтому сам протестить не могу.
upd. проверил у себя на 5.6 - тоже не работает Теперь еще большая загадка, почему у него получается использовать данный синтаксис. возможно причина в xampp под windows? Сам тестил под федорой (Добавление)
Новые забавные факты: пример тот что выше у него тоже не работает, а вот содержимое файла assets\AppAsset.php успешно отрабатывает. PHP 5.6.8
Добрый день, данная проблема возникла не у меня, а у моего друга, поэтому все детали данного магического поведения мне не ясны(в том числе и логи) А суть вот в чем: при объявлении поля класса и задания значения через условный оператор, фреймворк YII на php 5.4 выдает ошибку примерного вида unexpected '?'. на php 5.5 такой проблемы не наблюдается. В чем же корень данной проблемы?
(Добавление)
upd. Кажется уже нашел в документации: "Переменные, которые являются членами класса, называются "свойства". Также их называют, используя другие термины, такие как "атрибуты" или "поля", но в рамках этой документации, мы будем называть их свойствами. Они определяются с помощью ключевых слов public, protected, или private, следуя правилам правильного описания переменных. Это описание может содержать инициализацию, но инициализация должна применяться для константных значений - то есть, переменные должны быть вычислены во время компиляции и не должны зависеть от информации программы во время выполнения для их вычисления."
Можно попробовать array_filter или вручную пробежаться и удалить или сдвинуть(зависит от того какой результат на выходе Вы ожидаете получить) лишние элементы
Зависит от случая.
вики-разметка ещё тот геморой. Такая же "удобная" как и markdown.
Согласен, дело привычки. Но вместо того что бы пытаться обезопасить html разметку, возможно проще будет использовать безопасную и более знакомую многим пользователям разметку. Я не агитирую и не пытаюсь сказать, что это универсальное решение всех проблем. Изначально я поднимал вопрос о необходимости использования html и возможные альтернативные решения для неизвестной ситуации.
Основное: random_bytes уже в ядре и всегда доступна.
Про openssl_random_pseudo_bytes есть пара слов и ссылка на интересный баг вот тут: https://github.com/paragonie/random_compat/blob/master/ERRATA.md
Спасибо, буду иметь ввиду (Добавление)
Мелкий пишет:
Важно понимать, что все три представленных варианта кода - не CSPRNG и для серьёзных вещей (ключи, пароли, токены) применять не стоит.
Криптостойкий: http://php.net/manual/en/function.random-bytes.php
И тут я вспомнил, что мой вариант основан на увиденном методе генерации ключа для шифрования всего и вся в laravel 5.1