Лучшая альтернатива моему подходу (модули Symfony 1.4) - PullRequest
0 голосов
/ 30 марта 2012

В своем стремлении к совершенству и минимализму я задаю этот вопрос вам, ребята, в поисках лучшего и более альтернативного варианта, чем у меня.

У меня есть модуль с двумя разными шаблонами. По сути, первый - это шаблон теста, а второй - страница, на которой отображаются результаты теста. Тест - это форма, а страница результатов - нет. На моей странице викторины действие для формы по сути является «module / quizResults? Id =». $ QuizId

Теперь для действия викторины я делаю db-запрос, чтобы получить набор вопросов, относящихся к викторине, а затем, когда происходит публикация сообщения, вызывается действие quizResults, здесь я должен сравнить ответ. варианты моего пользователя против правильных вариантов ответа на вопросы викторины. По сути, я должен снова запросить БД, чтобы получить набор вопросов для тестов в другой БД. Я чувствую, что это небольшое излишество, и я раздражен.

Я думаю, что могут быть лучшие решения. Я могу публиковать сообщения на той же странице викторины, но тогда это требует большей сложности шаблона, а также действия, делающего вещи немного мрачнее.

Есть ли альтернативы?

Спасибо

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Есть несколько опций, которые вы можете реализовать, чтобы выполнить то, что вы просите, но вы должны спросить себя, перевесит ли дополнительная сложность незначительный прирост производительности, особенно если запросы оптимизированы.

Вариант № 1:Сессия

Когда вы загружаете вопросы из действия викторины, вы можете добавить вопросы в сеанс пользователя, а затем, когда пользователь публикует тест для результатов, просто обратиться к вопросам, сохраненным в сеансе.

Опция # 2: Memcached

То же, что и выше, но вместо сохранения вопросов в пользовательской сессии вы можете сохранить вопросы в memcache, поэтому при вычислении результатов вместо выполнения другого запроса к базе данныхвместо этого вы извлекаете вопросы из слоя кэша.

0 голосов
/ 30 марта 2012

Предполагая, что на странице представления должны отображаться все хорошо, если все правильно, или неправильные, если нет, я бы написал myprojectQuestionValidator и использовал бы это в своей форме вопроса, по одному на каждый вопрос / ответ.Затем валидатор может проверить каждый ответ на соответствие правильному ответу в базе данных.Согласитесь с Frits, не беспокойтесь о производительности - это преждевременная оптимизация IMO.Разбейте приложение на концептуальные компоненты и позаботьтесь об оптимизации, когда это необходимо.

0 голосов
/ 30 марта 2012

Вы пытаетесь решить эту проблему неправильно.

Производительность здесь абсолютно не проблема. Но проблема в производительности программистов. Если вам придется вручную обрабатывать каждый запрос и передавать все нужные переменные, это займет много времени. Что вам нужно, так это структура, которая позволит вам быстрее построить необходимую логику. Если вы знаете, как сделать это идеально, вы заработаете много денег, до этого вам придется копаться, как и все мы: P

...