Skip to content
Snippets Groups Projects
Commit 4fc1993c authored by Enzo Simonnet's avatar Enzo Simonnet
Browse files

gestion $word fluctuant dans les array + gestion erreur serveur éteint (non testé)

parent 41d3d22e
No related branches found
No related tags found
No related merge requests found
......@@ -12,6 +12,8 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\SerializerAwareInterface;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
class WiktionaryManager
{
......@@ -64,19 +66,40 @@ class WiktionaryManager
// -C, --compact json sans indentation
//$time_start = microtime(true); /*Debug*/
//$time_start = microtime(true); /*Debug*/
if ($_ENV['WIKTIONARY_TOOL'] == 'WIKSTRAKTOR') {
$command = $_ENV['WIKSTRAKTOR_COMMAND'] . ' -l ' . $language . ' -w ' . $language . ' -m "' . $word . '" -A -C 2>&1';
} else {
$command = $_ENV['WIKTEXTRACT_COMMAND'] . ' -l ' . $language . ' -w ' . $language . ' -e "' . $word . '"' . ' -zA 2>&1';
$url = 'http://localhost:5000/search/' . $language . '/' . $language . '/' . $word . '/a_wikstraktor';
$client = HttpClient::create();
// Make the initial request with a timeout
try {
$response = $client->request('GET', $url, ['timeout' => 2.5]);
// Check the HTTP status code
if ($response->getStatusCode() === 200) {
// Server is up and returned a successful response
$result = $response->getContent();
}
} catch (TransportExceptionInterface $exception) {
// Handle timeout for the initial request
$startServerCommand = '/var/www/live-query-wiktextract/venv/bin/python3 /var/www/live-query-wiktextract/src/app.py';
exec($startServerCommand);
}
// Stream responses with a timeout
foreach ($client->stream([$client->request('GET', $url)], 1.5) as $response => $chunk) {
if ($chunk->isTimeout()) {
// Handle timeout for streaming responses
$startServerCommand = '/var/www/live-query-wiktextract/venv/bin/python3 /var/www/live-query-wiktextract/src/app.py';
exec($startServerCommand);
}
}
$result = exec($command);
//dump($word);dump($command);dump(microtime(true)-$time_start);dump($result);die();/*Debug*/
//dump(gettype($result));dump($url);dump(microtime(true)-$time_start);dump($result);/*Debug*/
// Output and error handling
$dataArray = json_decode($result, true);
//dump(gettype($dataArray));dump($dataArray);die();/*Debug*/
// On sauvegarde la recherche pour optimiser le nb de requêtes vers le wiktionnaire
$this->lastSearch = [
......@@ -87,8 +110,7 @@ class WiktionaryManager
//dump(json_last_error());
//dump(json_last_error_msg());
//dump($dataArray);die(); Wiktionary
//dump($dataArray);die();
return $dataArray;
}
......@@ -135,14 +157,17 @@ class WiktionaryManager
$morphologicalLabels = [];
$entryData = [];
$word = array_keys($wiktionaryData[0])[2];
$excludedKeys = ["id", "sources", "translations"];
$allKeys = array_keys($wiktionaryData[0]);
$single = array_diff($allKeys, $excludedKeys);
$word = reset($single);
$entryData['Headword'] = $word;
$items = [];
foreach ($wiktionaryData as $pos) {
if (array_keys($pos)[2] != $word) {
/*if (array_keys($pos)[3] != $word) {
throw new \Exception(sprintf("Items se rapportant à des mots différents dans les données du wiktionnaire pour le mot %s.", $word));
}
}*/
$posData = $pos[$word];
$item = [];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment