how basic server in php works - php

I want to ask a conceptual question: how a server written in php works?
Actually I want to know when I write a simple php code to get some information from a client, how does the whole process happen?
In java I have to start server first. Server listens to the port. When any client knocks then connection creates. Is it similar to php? Before running client application do I have to run my php code or server will do that for me? I am using localhost.

see this article: http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/
Before running client application do I
have to run my php code or server will
do that for me.
This depends on your server architecture, you can use something like inet.d which invokes your script only if there is access on that port, or you have the standalone version, where you start the php from console und it waits for connections.

Does it similar to php ?
Yes.
Before running client application do I have to run my php code or server will do that for me.I am using localhost.
If you are writing a server in PHP then your PHP code is the server.

Related

Can PHP trigger an event on a remote Windows Server

Is there a way for PHP to send a signal to a Windows Server to run a script?
I am writing a web application which generates database entries that are later synced by a program on a remote Windows Server. PHP & mySQL are running on AWS.
The application on the windows server syncs the mySql database with Quickbooks. Ideally I would like to send a signal from PHP so that if PHP has updated the database, letting the remote Windows server know which script to run to in order to initiate the sync program. I would need to be pointed in the right direction both on the PHP commands as well as how to setup the listening service on Windows.
I was thinking if I could get Windows to listen on a specific port for a short XML file, PHP could send a password and entity ID number to identify which script to run.
Any suggestions?
Thanks!
You can use php on both end. Just install php server on windows, then when request happened execute a windows command. Php can do that.
I would schedule a task to read a specific file from the windows server side and from the php side you could use cron jobs. This question is too broad though and there are several approaches to that. You need to be more "code" specific.

Websocket with php and python client

I am new to web-sockets, What I wanted to achieve is run some bash script on my linux pc that is behind the NAT, I have a server running PHP, I was thinking to use websockets, I want to run a python websocket client which listens to my PHP server and run some bash scripts on certain events. I am not sure if this is possible or makes any sense at all. Hope somebody will point me to right direction??
No, this doesn't make sense.
Javascript applications running in web browsers can make a connection to a WebSocket server, which runs as part of a web server. While it is possible (if difficult) to connect to a WebSocket server using a non-browser-based client, doing so has limited utility.
If what you want to do is launch shell scripts from a web server running PHP, you don't need sockets at all, Web- or otherwise. Execute the scripts using shell_exec() or proc_open().
I found a solution, I am using the python client from https://pypi.python.org/pypi/websocket-client/ for the client machine and using Ratchet http://socketo.me/ for my LAMP server, my client listens to the message from server and runs the script and sends back the output using same socket (OR open up the reverse ssh connection to my server and I can SSH to my client machine)

Running websocket server on amazon EC2

I've written a web socket server that listens to a specific port. In order to run it I log in to EC2 instance with putty and run:
php server.php
I was wondering if this is the only and the right way to do. Normally copy my php files to the host via ftp would be enough, I don't understand why the php command needs to run the server.
Any help is appreciated.
This question is not about any particular coding problem, so is considered off-topic in terms of StackOverflow.
The way PHP works - is just a script file. Same as bash (.sh), python (.py), node.js (.js) or any other similar.
They all in fact have to be executed. In common world, Apache, nginx or any other web server will do execute those scripts for you for each request is made to web server.
As you are creating socket file, you need to create it yourself, as it creates one socket and php script will continue working as long as it will by it self. It is not executed per each request. In fact make sure it is not executed by apache so do not put in usual website directory.

Autobahn PHP client

I have a python autobahn script (websock) running and working perfectly with the browser, i need to send data from another server running PHP to the python server. is there any PHP websock clients that are compatible with the latest autobahn (websock) protocol ?
i have tried some, but neither worked
like this one
https://github.com/lemmingzshadow/php-websocket/blob/master/client/test_server.php
it didn't !
Ronan,
Take a look at the Thruway project. It's a WAMPv2 PHP client/server that's compatible with the current version of autobahn.js.
You can also find more information on how to create a simple PHP client here.

What do I need for the server side for a websocket?

I am using the following js plugin which allows me to use WebSockets on android and iOS with apps written in html5 (via phonegap in my case).
https://github.com/FreakDev/PhoneGap-Android-HTML5-WebSocket
What else do I need in order to use a websocket?
I have a basic server with bluehost that has PHP and MySQL installed.. What am I going to need to do?
First you can use a library like this one:
http://code.google.com/p/phpwebsocket/
Second, your host must let you create sockets. This mean PHP must have php_sockets.dll (Win) or sockets.so (Linux) extension enabled and a forwarded port from your server.
Also you need to run your php from commend line or somehow keep it alive for ever.
It is just like creating a normal socket in PHP.
*Edit:
WebSockets are just some sort of normal sockets. In websocket you can connect to a endpoint which is listening for connections and then communicate with it. Just like normal sockets but with simple differences in protocol and more limitations. For doing so you need a script or application to run for ever and handle all connections from webpages. But a php file will end just after request ended. For keeping a php file running for ever you need to run it from commend line which mean you need to have shell access, or you can use this code to run your php script for ever: (But you must think about a mechanism to call it only once)
ignore_user_abort(true);
ini_set('max_execution_time', 0);
set_time_limit(0);
You can test. If your application fail with error messages about not knowing a function like socket_connect or socket_bind then you don't have socket extension for php.
Here is phpwebsocket files for download:
http://phpwebsocket.googlecode.com/svn/trunk/%20phpwebsocket/
There is an example there too.
As "Tom van der Woerdt" said PHP is not designed for doing socket programming. Go for a non-scripting language and use a dedicated server or at least a vps for opening and managing sockets.

Categories