[Include] Koristite PHP u PAWN-u

Započeo []Flynâ„¢, Septembar 24, 2015, 00:18:47 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.



PHP u PAWN-u



Skoro sam se suocio sa problemom multi-threaded zahteva u pisanoj formi sistema za razmenu poruka za svoj projekat. Sustina problema je da upravo izracuna broj dolaznih i odlaznih poruka od odredjenog korisnika. Dakle, sve u principu moze, ali bi morali za svaki zahtev da kreirate poseban Public, zato je tu multi-threaded. To izgleda sve  redu, dva zahteva = dva Publica, nije to pogresno, to je samo prljavstina od koda.


Resenje:



Zapravo, nalazio sam na internetu gomilu korisnih stvari, medjutim, nisu odgovarali mojim potrebama. Ubrzo nakon malo guglanja, odlucio sam da ostanem u dobrim funkcijama kao sto su HTTP();.



Funkcija parametri
(index, type, url[], data[], callback[])index - ID (playerid, giveplayerid)type - tip zahteva koji zelite da posaljeteurl[] - URL query (bez "http://")data[] - sve poruke i podaci koji ce biti poslati na zahtevcallback[] - ime callback funkcije, ako zelite da koristite za obradu odgovara na zahtev.  ?>




Vrste upita (type):
HTTP_GET - Salje zahtev na HTTP.HTTP_POST - Salje zahtev podacima (data).HTTP_HEAD - Salje zahteve na HTTP, ali ignorise sve odgovore u podacima(data).  ?>




Response codes:
HTTP_ERROR_BAD_HOST                     1HTTP_ERROR_NO_SOCKET                   2HTTP_ERROR_CANT_CONNECT              3HTTP_ERROR_CANT_WRITE                  4HTTP_ERROR_CONTENT_TOO_BIG         5HTTP_ERROR_MALFORMED_RESPONSE   6?>




Standardni Response codes:
HTTP 404 (stranica nije pronadjena), 500 (server error) ili 403 (forbidden).?>


Dalje o opisu i primerima funkcije necu ici. Kome treba -> Google u ruke i search.



Koriscenje funkije u praksi
U mom slucaju HTTP interakciju sa PHP fajlom na serveru koja salje specijalni zahtev i prima kodiran(ako je potrebno) odgovor, koji se kasnije desifruje, i zatim koristi po potrebi.


Primer:
[pawn]/* Na vrh moda */
#define PHP_FILE_LOCATION "adresa/ime.php" //Web adresa ( putanja ) do vaseg PHP fajla ( bez http:// )
#define SECURITY_CODE "12345" // Sigurnosni kod. Koristi se za sprecavanje neovlascenog pristupa php fajlu.
#include <a_php>[/pawn]



Ovo je radni kod sa kojim zelim da dobijem broj primljenih/poslatih poruka odredjenom korisniku.
[pawn]new parameters[24], switch_case[24] = "inputAndOutputMessages";
format(parameters, sizeof(parameters), "%s", getName(playerid));
RunMySQLQuerySwitch(100, switch_case, parameters); // Posaljite zahtev[/pawn]



PHP fajl


[pawn]define('SECURITY_CODE', 'Ovo je sigurnosni kod koji se mora poklapati sa onim iz PAWNa.');
if($_POST[security] == SECURITY_CODE)
{
    $caseQuery = mysql_real_escape_string($_POST[switch_case]);
    if(!empty($caseQuery))
    {
        switch($_POST[switch_case])
        {
            case "inputAndOutputMessages":
                // Ovde sta zelimo da uradimo.
            die;
            break;
        }
    } else {
        echo 'Error.';
    }
   
} else {
    echo('Pogresan sigurnosni kod!');
}[/pawn]



[INC] a_php.inc
[pawn]#include <a_http>

#define MAX_PHP_LENGTH 256

forward OnServerTryingToRunPHP(index, response_code, data[]);
forward OnScriptResponse(scriptid, contents[]);

stock RunMySQLQuerySwitch(scriptid, const switch_case[], const parameters[])
{
        new string[MAX_PHP_LENGTH+5];
        format(string, sizeof(string), "switch_case=%s&parameters=%s&security="SECURITY_CODE, switch_case, parameters);
        HTTP(scriptid, HTTP_POST, PHP_FILE_LOCATION, string, "OnServerTryingToRunPHP");
}

public OnServerTryingToRunPHP(index, response_code, data[])
{
        if(response_code != 200)
        {
                printf("Greska: %d, pokusava da sastavi PHP na spoljnom serveru.", response_code);
                return 0;
        }
        CallLocalFunction("OnScriptResponse", "ds", index, data); // Povratak kod odgovora u PAWNu
        return 1;
}[/pawn]



Obrada server response-a
[pawn]public OnScriptResponse(scriptid, contents[])
{
    if(scriptid == 100) // Navedite sta da radi sa odredjenim upitom ID
        // Ovde akcija
            // Ako zelite, mozete nositi zahteve pristigle iz kodiranja
    return 1;
}[/pawn]


veoma korisna i dobra fora :) svaka cas

i am king!

Ljepo odradjeno, pohvale :)

My Bike KTM 450 SXF 2008


Vrlo korisno hehe :)
Samp Stories RP - 2023 - USKORO !

Citat: MG | RaKee poslato Septembar 24, 2015, 11:24:49 PRE PODNE
HTTP je spor, ali oke je ovo :D
Jeste malo sporiji, ali za ovu namenu je to sasvim okej.
Ostali, hvala. :)
Poslednja Izmena: Septembar 24, 2015, 17:50:16 POSLE PODNE od []MaKiâ„¢



About

Welcome to the community!