If I understand your question correctly, it sounds to me like you need two separate scripts: one to listen for incoming messages and log them and another to display the logs via http.
To listen for incoming messages, you need a daemon that listens to the port and logs messages to a file. You also mention that you want the ability to start and stop the logging from the web. One possiblity for starting the daemon is by forking a process...see forking from web for some ideas. Maybe have a "last accessed via the web" timestamp in a file that the daemon checks occasionally and deletes the file and kills itself when the time is not recent enough.