I have two servers. Server A has all the databases. How can server B query server A's database and receive the results with fsockopen()
? currently, I can only pass actual text through the socket (i.e. if server A's php code prints out something as in echo
). How can I pass through the query results (the resource) in this open socket?
If using fsockopen is the only way you are able to communicate with Server B's database, serializing the results of the query or encoding them in JSON format and writing them to the socket are possibilities.
Is it not possible to grant read-only access to the mysql server from server A only so you can query directly? Otherwise a REST service would be a good alternative to fsockopen.
As stated, you cannot pass the resource over the socket as it wouldn't have any meaning on server A anyway. If you tried to pass it over the socket it would probably return a string (i.e. Resource #1)
You can't pass the PHP resource type*Docs* via fsockopen, because fwrite/read will convert the data into a (binary) string. See:
Converting to resource
As resource variables hold special handlers to opened files, database connections, image canvas areas and the like, converting to a resource makes no sense.
Same is true for converting a resource into something else, e.g. a string.
What are you doing? Just allow remote mysql and let the database server do its job.