Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #15477

Re: response for server every second

From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Newsgroups comp.lang.php
Subject Re: response for server every second
Date 2015-06-22 18:37 +0200
Organization PointedEars Software (PES)
Message-ID <10793488.AfY9kfu9Qn@PointedEars.de> (permalink)
References <94be00e7-99d7-4d84-97a5-538535a0317d@googlegroups.com> <55784c9c$0$2956$e4fe514c@news2.news.xs4all.nl>

Show all headers | View raw


Erwin Moller wrote:

> On 6/10/2015 3:59 PM, apoorv.kanungo@gmail.com wrote:
>> I want to get response from server every one second, the output will
>> contain some value which I need to process in front end.
>>
>> In backend I am using some queries to read data from mysql and return me
>> output.
>>
>> Things I have tried 1) Ajax 2) Webserver Events 3) Amazon Cloudfront
>>
>> None of these work for me usually it is taking 3-4 seconds to get me
>> response,
>>
>> classic example to see this working(getting output in one sec)
>>
>> http://madbid.com
> 
> […]
> 1) How many clients are requesting that info on the server?
> If you have multiple clients, think over your design (i'll come back to
> that)

No.  See below.

> Let's look at XML HTTP Request (XHR) first (what you called AJAX):
> What happens?
> a) Client request a PHP page

No, that is precisely what in most cases does _not_ happen with XHR.
Which is why it is fast as compared to traditional approaches.

> b) Server much launch the process
> c) PHP runs, and starts a database query
> d) Database processes the query, and answers
> e) PHP delivers the answer as output back to the requesting client
> f) Client updates the screen
> 
> This is just not feasible every second.

Probably true.  Which is why you do not do low-latency work this way.

  ad a) You do not request an entire document, only the data;
        the HTTP connection is still open from before;
  ad b) the server does not need to launch the PHP process because that
        is still running from before: use PHP via FastCGI, not as Apache
        module;
  ad c) the database query result is cached by the database server,
        so that the need for subsequent queries is minimized;
  ad d) the query is optimized so as to run fast, by using indexes
        and so on.
  ad e) PHP delivers only the data to the Web server, or *as* Web
        *service*, which serves it to the Web client;
  ad f) Client-side scripting uses the data from the response
        to update only parts of the document.

> Try that with 1000 clients. ;-)

No problem.  Web server software can run multiple instances of itself and 
each instance can run multiple threads.  It is merely a matter of hardware 
performance.  BTST where I am working.

> There is so much overhead involved, and networking, you can't expect
> this to run every second.

True.  But see above.

> Solution:
> Create a cronjob that runs every second.
> Let it call your PHP script that queries the database.
> Instead of responding to a client, let PHP put its output in a file in a
> public directory.
> Let XHR directly fetch this file.
> This is much faster.

And the data written will be out of date, and there will be concurrency 
problems, while this is heavy on the hardware.  Do not do that unless you 
want to wreck your harddisk (or memory, if you use in-memory storage) in
the long-term.

> Warning: write the file as myOutput_tmp.xml, then rename to
> myOutput.xml, otherwise you risk trying to read a file that is in the
> process of being written.

Even heavier on resources.  How many copies do you suggest should be lying 
around on the harddisk?  This is an Incredibly Bad Idea[tm].

Also, XML is not a good format for database dumps as it has much overhead.  
JSON or YAML leaner formats, in general better suited to the task.  But not 
in this case.

The idea behind this is a good one though if the database is not updated 
every second.  The idea is called caching.  You would not do that in the 
filesystem, though, at least not directly.  Server-side sessions come to 
mind.

> 2) Use nodeJS
> Indeed, no PHP. No AJAX.
> NodeJS is extremely fast and supports sockets.

So is and does PHP.  You are comparing apples and oranges.  PHP does not 
have to run via a Web server like Apache; you can write a Web service in 
PHP, much like a nodeJS application.

> If you are a bit familiar with ECMA Script (such as Javascript), try
> this route.

_ECMAScript_, _JavaScript_.  JavaScript is an implementation of ECMAScript; 
actually JavaScript *are* implementations of ECMAScript as there are several 
implementations (but not all of them) that contain “JavaScript” in their 
name.  At the time of writing, Netscape/Mozilla JavaScript, Google V8 
JavaScript (in Chromium and nodeJS, now in Opera too), and KDE JavaScript, 
to name a few.  But there is also Microsoft JScript and Opera ECMAScript (in 
older versions).

However, it is not so much a matter of the programming language but of the 
browser environment API (e.g. the DOM), although whatever ECMAScript 
implementation the HTML user agent supports is now [HTML5] the standard 
default client-side scripting language, and implicitly has been the quasi-
standard for years.

<http://PointedEars.de/es-matrix>
 
-- 
PointedEars
Zend Certified PHP Engineer
Twitter: @PointedEars2
Please do not cc me. / Bitte keine Kopien per E-Mail.

Back to comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

response for server every second apoorv.kanungo@gmail.com - 2015-06-10 06:59 -0700
  Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-10 10:18 -0400
  Re: response for server every second Erwin Moller <erwinmollerusenet@xs4all.nl> - 2015-06-10 16:41 +0200
    Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-10 11:55 -0400
      Re: response for server every second Allodoxaphobia <knock_yourself_out@example.net> - 2015-06-10 16:50 +0000
        Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-10 13:23 -0400
          Re: response for server every second Richard Yates <richard@yatesguitar.com> - 2015-06-10 10:37 -0700
            Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-10 14:27 -0400
    Re: response for server every second apoorv.kanungo@gmail.com - 2015-06-10 23:38 -0700
    Re: response for server every second apoorv.kanungo@gmail.com - 2015-06-11 00:14 -0700
      Re: response for server every second Erwin Moller <erwinmollerusenet@xs4all.nl> - 2015-06-11 12:09 +0200
        Re: response for server every second apoorv.kanungo@gmail.com - 2015-06-11 04:16 -0700
          Re: response for server every second Erwin Moller <erwinmollerusenet@xs4all.nl> - 2015-06-11 14:37 +0200
            Re: response for server every second apoorv.kanungo@gmail.com - 2015-06-11 06:20 -0700
              Re: response for server every second Matthew Carter <m@ahungry.com> - 2015-06-11 13:45 -0400
            Re: response for server every second apoorv.kanungo@gmail.com - 2015-06-11 23:35 -0700
              Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-12 09:10 -0400
          Re: response for server every second Denis McMahon <denismfmcmahon@gmail.com> - 2015-06-12 03:59 +0000
            [off topic nodejs advertisement] Was Re: response for server every second Erwin Moller <erwinmollerusenet@xs4all.nl> - 2015-06-15 16:08 +0200
              Performance of PHP vs. Node.js (was: [off topic nodejs advertisement]) "Christoph M. Becker" <cmbecker69@arcor.de> - 2015-06-15 20:42 +0200
                Re: Performance of PHP vs. Node.js Erwin Moller <erwinmollerusenet@xs4all.nl> - 2015-06-16 00:20 +0200
                Re: Performance of PHP vs. Node.js "Christoph M. Becker" <cmbecker69@arcor.de> - 2015-06-16 00:58 +0200
          Re: response for server every second gordonb.890nt@burditt.org (Gordon Burditt) - 2015-06-13 13:39 -0500
            Re: response for server every second apoorv.kanungo@gmail.com - 2015-06-18 23:16 -0700
              Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-19 08:16 -0400
                Re: response for server every second apoorv.kanungo@gmail.com - 2015-06-21 23:06 -0700
                Re: response for server every second "Peter H. Coffin" <hellsop@ninehells.com> - 2015-06-22 08:03 -0500
                Re: response for server every second Denis McMahon <denismfmcmahon@gmail.com> - 2015-06-23 06:39 +0000
                Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-23 07:23 -0400
    Re: response for server every second Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-22 18:37 +0200
      Re: response for server every second Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-22 18:42 +0200
      Re: response for server every second Erwin Moller <erwinmollerusenet@xs4all.nl> - 2015-06-23 17:11 +0200
        Re: response for server every second Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-24 00:06 +0200
          Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-23 19:10 -0400
            Re: response for server every second Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-24 01:45 +0200
              Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-23 20:21 -0400
                Re: response for server every second apoorv.kanungo@gmail.com - 2015-06-23 23:34 -0700
                Re: response for server every second bill <william@TechServSys.com> - 2015-06-24 06:58 -0400
                Re: response for server every second Arno Welzel <usenet@arnowelzel.de> - 2015-06-25 17:18 +0200
                Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-25 20:31 -0400
                Technical requiremenets for Usenet messages (was: Re: response for server every second) Arno Welzel <usenet@arnowelzel.de> - 2015-06-26 10:43 +0200
                Re: Technical requiremenets for Usenet messages Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-26 21:47 +0200
                Re: Technical requiremenets for Usenet messages Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-26 22:19 +0200
                Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-25 23:07 -0400
                Re: response for server every second Arno Welzel <usenet@arnowelzel.de> - 2015-06-26 10:21 +0200
                Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-26 06:48 -0400
                Technical requirements for Usenet messages (was Re: response for server every second) Arno Welzel <usenet@arnowelzel.de> - 2015-06-26 13:48 +0200
                Re: Technical requirements for Usenet messages (was Re: response for server every second) Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-26 14:29 -0400
                Re: Technical requirements for Usenet messages Arno Welzel <usenet@arnowelzel.de> - 2015-06-27 14:49 +0200
                Re: Technical requirements for Usenet messages Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-27 10:25 -0400
                Re: Technical requirements for Usenet messages Arno Welzel <usenet@arnowelzel.de> - 2015-06-28 17:52 +0200
                Re: Technical requirements for Usenet messages Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-28 20:08 -0400
                Re: Technical requirements for Usenet messages "Peter H. Coffin" <hellsop@ninehells.com> - 2015-06-27 22:14 -0500
                Re: Technical requirements for Usenet messages Arno Welzel <usenet@arnowelzel.de> - 2015-06-28 17:54 +0200
                Re: Technical requirements for Usenet messages Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-28 20:10 -0400
                Re: Technical requirements for Usenet messages Arno Welzel <usenet@arnowelzel.de> - 2015-06-30 09:54 +0200
                Re: Technical requirements for Usenet messages Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-30 08:45 -0400
                Re: Technical requirements for Usenet messages Arno Welzel <usenet@arnowelzel.de> - 2015-06-30 16:20 +0200
                Re: Technical requirements for Usenet messages Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-30 15:00 -0400
                Re: Technical requirements for Usenet messages Arno Welzel <usenet@arnowelzel.de> - 2015-07-06 13:36 +0200
                Re: Technical requirements for Usenet messages Jerry Stuckle <jstucklex@attglobal.net> - 2015-07-06 11:56 -0400
                Re: Technical requirements for Usenet messages Richard Heathfield <rjh@cpax.org.uk> - 2015-07-06 18:54 +0100
                Re: Technical requirements for Usenet messages Jerry Stuckle <jstucklex@attglobal.net> - 2015-07-06 16:54 -0400
                Re: Technical requirements for Usenet messages Richard Heathfield <rjh@cpax.org.uk> - 2015-07-07 00:00 +0100
                Re: Technical requirements for Usenet messages Jerry Stuckle <jstucklex@attglobal.net> - 2015-07-06 22:08 -0400
                Re: Technical requirements for Usenet messages Richard Heathfield <rjh@cpax.org.uk> - 2015-07-07 07:24 +0100
                Re: Technical requirements for Usenet messages Jerry Stuckle <jstucklex@attglobal.net> - 2015-07-07 10:41 -0400
                Re: Technical requirements for Usenet messages apoorv.kanungo@gmail.com - 2015-07-09 22:52 -0700
                Re: Technical requirements for Usenet messages Denis McMahon <denismfmcmahon@gmail.com> - 2015-07-02 03:07 +0000
                Re: response for server every second Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-26 21:13 +0200
            Re: response for server every second Richard Heathfield <rjh@cpax.org.uk> - 2015-06-24 09:52 +0100
              Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-24 09:21 -0400
                Re: response for server every second Richard Heathfield <rjh@cpax.org.uk> - 2015-06-24 18:48 +0100
                Re: response for server every second Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-24 20:55 +0200
                Re: response for server every second Richard Heathfield <rjh@cpax.org.uk> - 2015-06-24 20:55 +0100
                Re: response for server every second Jerry Stuckle <jstucklex@attglobal.net> - 2015-06-24 15:21 -0400
                Re: response for server every second Richard Heathfield <rjh@cpax.org.uk> - 2015-06-24 20:35 +0100

csiph-web