Передача ресурса через fsockopen () в PHP - PullRequest
0 голосов
/ 27 декабря 2011

У меня есть два сервера.Сервер А имеет все базы данных.Как сервер B может запрашивать базу данных сервера A и получать результаты с помощью fsockopen()?в настоящее время я могу только передавать фактический текст через сокет (то есть, если php-код сервера A печатает что-то вроде echo)Как я могу пройти через результаты запроса (ресурс) в этом открытом сокете?

Ответы [ 3 ]

1 голос
/ 27 декабря 2011

Если использование fsockopen - это единственный способ связи с базой данных сервера B, то возможны сериализация результатов запроса или их кодирование в формате JSON и запись в сокет.

Разве это не так?возможно предоставить доступ только для чтения к серверу MySQL с сервера А только для того, чтобы вы могли запросить напрямую?В противном случае служба REST будет хорошей альтернативой fsockopen.

Как уже говорилось, вы не можете передать ресурс через сокет, так как он все равно не будет иметь никакого значения для сервера А.Если вы попытаетесь передать его через сокет, он, вероятно, вернет строку (т. Е. Resource # 1)

1 голос
/ 27 декабря 2011

Вы не можете передать тип ресурса PHP * & shy; Docs * через fsockopen, потому что fwrite / read преобразует данные в (двоичную) строку. См:

Преобразование в ресурс

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

То же самое верно для преобразования ресурса во что-то другое, например, строка.

0 голосов
/ 28 декабря 2011

Что ты делаешь?Просто разрешите удаленный MySQL и позвольте серверу базы данных выполнять свою работу.

...