png-file as a HTTP-Response...

Discussion in 'Ruby' started by David Gösele, Dec 21, 2009.

  1. Hello,

    Im quite stuck with my little project of writting a File-Controller in
    ruby.
    The actual problem is, that if I stream a png-file to a client
    TCP-Socket, the browser is getting the file realy slowly, so that it is
    possible to see the file beeing build on the page. It doesn't matter if
    I do this on a 100MbBits/s Server or doing it as localhost. I tried many
    diffrent ways of writing to the client-socket: syswrite, puts, write and
    all with 1024 buffer or without any buffer. The result is just the same,
    a very slow answer.
    I am not a ruby-expert and probably it is just a misstake of my own, but
    I hope you will help me with this, because I am realy stuck...

    thanks...

    Attachments:
    http://www.ruby-forum.com/attachment/4333/test.rb

    --
    Posted via http://www.ruby-forum.com/.
     
    David Gösele, Dec 21, 2009
    #1
    1. Advertising

  2. Robert Murmel wrote:
    > the browser is getting the file realy slowly
    > [...]
    >
    > server = Thread.start {
    > while (cl = serverSocket.accept)
    > [...]
    > end
    > }
    > while (true)
    > true
    > end


    This "while true; end" is known as a "busy loop" (google for this term)
    and is not CPU-friendly. Perhaps it steals CPU cycles form your working
    thread.

    Remove this busy loop and the "server = Thread.start" line and have only
    this:

    while (cl = serverSocket.accept)
    [...]
    end

    and see if it solves the problem.

    --
    Posted via http://www.ruby-forum.com/.
     
    Albert Schlef, Dec 24, 2009
    #2
    1. Advertising

  3. Albert Schlef wrote:
    >> server = Thread.start {
    >> while (cl = serverSocket.accept)
    >> [...]
    >> end
    >> }
    >> while (true)
    >> true
    >> end

    >
    > This "while true; end" is known as a "busy loop" (google for this term)
    > and is not CPU-friendly. Perhaps it steals CPU cycles form your working
    > thread.


    you can just replace it with:

    server.join
    --
    Posted via http://www.ruby-forum.com/.
     
    Brian Candler, Dec 25, 2009
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.

Share This Page