Тот факт, что вы говорите о SMS-сообщениях (это асинхронная система обработки сообщений), немного сбивает с толку - на практике это не имеет значения - важно то, что вы пытаетесь написать асинхронную систему обработки сообщений для делать что-то .
Нет конца готовых решений для очередей и обработки сообщений. Ранее я использовал BSD lpd для небольших объемов SMS / факсов. Вы также можете использовать MTA или инструмент, специально разработанный для обработки SMS, такой как Kannel. IME, имея дело с агрегаторами, предоставляющими несколько различных API-интерфейсов, оказался более эффективным для разработки моего собственного решения.
Если вы собираетесь написать собственное решение, не используйте cron.
Когда запускается ваша работа cron, вы берете только одно сообщение и обрабатываете его? Вы пытаетесь собрать все доступные сообщения и обработать их? Что если это займет больше, чем интервал между заданиями cron? Хотя подсистема обмена сообщениями (ДО вашего подписчика, а НЕ после) избавилась бы от некоторых сложностей, но она не решает всех проблем.
Правильный способ сделать это с помощью процесса-демона, работающего как один поток или с запланированным разделением.