В куках "ничего нет" потому что Вы пытаетесь обратиться к ним сразу же в тот же момент, как устанавливаете. Это не приведёт ни к чему, так как setcookie лишь отправляет соответствующий HTTP-Response header, после чего браузер клиента будет устанавливать куку. У Вас же - после setcookie идёт некоторый дальнейший код, который не будет работать, поскольку к тому моменту браузер клиента ещё не установил куки - и тем более не послал их в своём HTTP-Request (строго говоря, вся Ваша логика будет работать в контексте того запроса, который был изначально, то есть без кук)
Если нет нужды работать с отдельным значением в строке (то есть требуется лишь одно - сохранить - и потом в приложении обработать) - то serialize - записаь в БД / чтение из БД - unserialize
Теперь стало ещё непонятнее. Как браузер общается с сокет-сервером? Какова вообще архитектура приложения (клиентов и сервера)? Какие данные пересылаются? Без ответов на эти вопросы понять причину не получится.
Хорошо, чтобы не угадывать - уточню, что в безопасном режиме это не возымеет эффекта. Для CLI в большинстве случаев, он включён. Впрочем, в новых версиях это уже не является проблемой. Хм - хотя не совсем корректно этот случай называть "отсутствием управляющего процесса".
На деле, в общем случае, set_time_limit в контексте CLI не имеет смысла - поскольку нет управляющего процесса, который бы следил за временем исполнения (как это происходит, например, в случае интеграции как apache-модуля). Для того, чтобы дать ответ, нужно знать, что происходит - какая ошибка и при каких условиях.
Но, что если записей много? Скрипт не уложиться в таймаут и\или сожрет весь проц и\или сожрет всю оперативку.
На практике, чтобы это случилось - при правильной индексации - данных должно быть действительно много. Всё, что имеет порядок меньше 100млн - для линейной статистики (суммирование/подсчёт среднего/количества) - просто ничто.
Аргумент в RAND() задаст инициализацию для псевдослучайного генератора, благодаря чему записи хоть и будут случайными, но они будут одинаковыми при каждой выборке.
VenZell is_string не совсем верно, ведь PHP корректно обрабатывает и ключи других типов данных (то есть, они являются допустимыми, пусть и преобразуются согласно внутренним правилам)