Sto sviluppando un giochino a tempo perso, il cui concept è semplice: dall'alto cadono delle lettere, random ed in posizioni random. Cliccando su ogni lettera si possono formare delle parole che, se di senso compiuto, vanno a formare un punteggio.
Giochino semplice e banale, ma mi sta servendo per "giocare" un po' con jQuery ed il suo scopo è più che altro didattico, per me.
Lo sviluppo è quasi terminato, rimane qualche piccolo bug qua e la ma è già giocabile. Il problema è che quando l'ho spostato sul server in produzione (non proprio un fulmine di guerra, anzi...) diventa praticamente ingiocabile: il tempo richiesto per il controllo di ogni parola è lunghissimo e durante l'"elaborazione" il gioco va in freeze per alcune centinaia di millisecondi, che è francamente troppo.
Ho provato ad impostare il confronto in modo asincrono, non ho più la lentezza ma il confronto non viene praticamente più considerato, perché js prosegue nelle istruzioni ignorando l'attesa della richiesta.
In particolare, questo è il codice javascript che richiama il confronto (fatto lato server, perché il dizionario è di più di 2mb e manda in crash i browser degli smartphone)
codice:
function checkWord() {
var result = false;
var word = $("#wordsbar").text();
if (word.length >= 2) {
var result = $.ajax({
url: "search.php",
data: { w: word },
async: false
});
result = result['responseText'];
}
return result;
}
E questo lo script php che si occupa del confronto
Codice PHP:
<?php
$word = strtolower($_GET['w']);
$dictionary = file('words_italian.txt', FILE_IGNORE_NEW_LINES);
if ( in_array($word, $dictionary) ) {
echo "1";
}
L'elaborazione del codice php, per inciso, richiede circa 90millisecondi. Tantini (in futuro sostituirò in_array con qualcosa di più veloce), ma per ora sono trascurabili... il problema sono i 700-800 dovuti alla richiesta ajax
Idee su come velocizzare il tutto, o quantomeno (in realtà è più che altro questo ad interessarmi, non potendo al momento cambiare server) come "mascherare" la lentezza della richiesta?