Возможно, глупый вопрос, но мне нужно найти ответ. Приложение, которое мы пишем, должно обрабатывать отдаленные прошлые и будущие даты, и я думаю, что обработка наших дат как 64-битных меток времени Unix будет простым решением, если я правильно понимаю руководство по PHP , в котором говорится, что максимальное значение типа int зависит от платформы и всегда подписан. Таким образом, платформа x64 должна поддерживать 2 ^ 63 байта, в то время как платформа x86 должна поддерживать 2 ^ 31 максимума.
По сути, приложение имеет дело только с целочисленными временными метками, чтобы сделать наши довольно сложные алгоритмы немного проще. Однако попытка обработать отдаленные прошлые или будущие значения временной метки вызывает ожидаемое переполнение для любого значения, превышающего +/- 2 ^ 31 в PHP для нашей текущей сборки x86. Мое решение состоит в том, чтобы просто скомпилировать сборку x64 PHP с бесплатной загрузкой Visual C ++ Studio, но прежде чем я углублюсь в это, я хотел бы знать, правильно ли мое предположение - "Сборка PHP для Windows x64 будет корректно обрабатывать 64-битные int значения и правильно преобразовать «галочки» Windows в 64-битную метку времени Unix для ее собственных функций даты и времени, как это делается для сборки x86. "
Например:
echo mktime(0, 0, 0, 12, 31, 2055);
вернет правильную метку времени вместо false .
То же самое относится и к временным меткам MYSQL. Например:
SELECT UNIX_TIMESTAMP('2065-11-30 10:30:19');
вернет правильное значение вместо '0' , как это делается для текущей сборки x86, которую мы выполняем.
-Надеюсь, я не слишком двусмысленен. Заранее спасибо. Мы всего лишь кучка фанатов науки, а не настоящие программисты, и мы боремся с этой «тривиальной» проблемой.