Autor Zpráva
Citanek
Profil *
Zdravím,

mám tento kod

(function($){
    
    function handleResponse(response){
        $('#content').append('<div>' + response['msg'] + '</div>');
    }

    var timestamp = 0;
    var url = './chat_backend.php';
    var noerror = true;
    var ajax;

    function connect() {
        ajax = $.ajax(url, {
            type: 'get',
            data: { 'timestamp' : timestamp },
            success: function(transport) {
                eval('var response = '+transport);
                timestamp = response['timestamp'];
                handleResponse(response);
                noerror = true;
            },
            complete: function(transport) {
                (!noerror) && setTimeout(function(){ connect() }, 5000) || connect();
                noerror = false;
            }
        });
    }

    function doRequest(request) {
        $.ajax(url, {
            type: 'get',
            data: { 'msg' : request, 'id_uzivatele' : '1'}
        });
    }

    $('#cometForm').live('submit', function(){
        doRequest($('#zprava').val());
        $('#zprava').val('');
        return false;
    });

    $(document).ready(function(){
        connect();
        });
    })(jQuery);

Problém je v tom, že při vetším počtu dotazů skočí do 503. Chtěl jsem to použít a udělat si z toho takový malý chat, bohužel se jaksi nemohu posunout z místa.

Neměl by někdo nějaký nápad ? Díky
Kajman
Profil
Můžete se podívat, co je v error logu serveru. Ale pokud je příliš zatížen (a backend dobře napsán), tak může být nejjednodušší koupit výkonnější hosting.
Chamurappi
Profil
Reaguji na Citanka:
(!noerror) && setTimeout(function(){ connect() }, 5000) || connect();
Sice to máš maskované, ale pochopil jsem dobře, že se snažíš bombardovat server požadavky bez jakýchkoliv prodlev? To je dost sebevražedné.
Citanek
Profil *
No jde o to, že bych rád, když uživatel něco napíše, aby se to objevilo proti uživateli ihned...
Keeehi
Profil
Citanek:
To je nám jasné, ale takhle se to dělat nedá. Nejlepší řešení pro tebe by asi bylo použít WebSockets. Pokud chceš zůstat u AJAXu, pak by mohl pomoct long pooling. Tím ale zase zabíráš procesy na serveru.
Citanek
Profil *
tak jsem koukal do logu a hodí to

[Mon Apr 10 13:51:30.247986 2017] [fcgid:warn] [pid 13655:tid 140198170052352] [id QXcWhp5nHAU] [client 176.74.128.54:55954] mod_fcgid: read data timeout in 310 seconds
[Mon Apr 10 13:51:30.248026 2017] [core:error] [pid 13655:tid 140198170052352] [id QXcWhp5nHAU] [client 176.74.128.54:55954] End of script output before headers: chat_backend.php
[Mon Apr 10 13:53:17.955661 2017] [fcgid:warn] [pid 13655:tid 140197991724800] [id uY4rm05kHAU] [client 176.74.128.54:58891] mod_fcgid: can't apply process slot for /data/web/virtuals/159909/php-wrapper-70

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0