У меня есть веб-приложение, которое я пишу, которое загружает базу данных конфигурации в общую память для быстрого доступа. Проблема, с которой я сталкиваюсь, заключается в том, что при работе с веб-сервера (в данном случае Apache) возникает разрыв соединения между общей памятью и при запуске из командной строки с помощью php -f
. Это разрабатывается на компьютере с Windows 10, но рабочий сервер работает под управлением Unix. Похоже, что работает под Unix.
Единственная соответствующая информация, которую мне удалось найти, была этот вопрос здесь, на StackOverflow. Я знаю, что операции с общей памятью между Unix и Windows принципиально различаются, но когда я использую один и тот же идентификатор (ключ) для идентификации области общей памяти, не должен ли он обращаться к той же области независимо от среды выполнения?
Я знаю, что это работает под Unix, потому что я пробовал это. Один из других разработчиков использует Macintosh, и он тоже работает там. Windows, кажется, не работает. В руководстве по PHP указано, что в версиях Windows до 2000 года общая память недоступна.
Значит, разъединение в общей памяти между CLI и Web в Windows является чем-то присущим платформе? Ответ в связанном вопросе, похоже, указывает на «да», но его спросили в 2009 году. С тех пор прошло 9 с лишним лет?
Это работает под управлением Windows 10, Apache 2.4, PHP 7.2 и MySQL 5.17.
Я не слишком разбираюсь в программировании для Windows, поскольку пришел из среды Unix и в прошлом использовал общую память System V для IPC.