Skip to content

Instantly share code, notes, and snippets.

@Machou
Last active December 21, 2023 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Machou/31c77d295e1a64d75f3326dad49579aa to your computer and use it in GitHub Desktop.
Save Machou/31c77d295e1a64d75f3326dad49579aa to your computer and use it in GitHub Desktop.

Vérifier l’usage du CPU en PHP

<?php
if(file_exists('/proc/loadavg') AND is_readable('/proc/loadavg'))
{
	$fh = fopen('/proc/loadavg', 'r');
	$load_averages = fread($fh, 64);
	fclose($fh);

	if(($fh = fopen('/proc/loadavg', 'r')))
	{
		$load_averages = fread($fh, 64);
		fclose($fh);
	}

	else
		$load_averages = '';

	$load_averages = @explode(' ', $load_averages);
	$server_load = isset($load_averages[2]) ? '<span title="1 minute">'.$load_averages[0].'</span> / <span title="5 minutes">'.$load_averages[1].'</span> / <span title="15 minutes">'.$load_averages[2].'</span>' : $lang_admin_index['Not available'];
}

else
	$server_load = 'Stats serveur non disponible';

Récupérer des liens via le DOM

<?php
$url = 'https://choualbox.com/';

// Créer un nouvel objet DOMDocument
$dom = new DOMDocument();

// Ignorer les erreurs liées au HTML mal formé
libxml_use_internal_errors(true);

// Charger le contenu HTML de la page
$dom->loadHTMLFile($url);

// Réinitialiser les erreurs
libxml_clear_errors();

// Récupérer tous les éléments <a>
$liens = $dom->getElementsByTagName('a');

// Vérifier s'il y a au moins un lien
if($liens->length > 0) {
	foreach($liens as $lien) {
		echo $lien->getAttribute('href').'<br>'."\n";
		echo $lien->textContent.'<br>'."\n";
		echo $lien->nodeValue.'<br>'."\n";
	}
} else {
    echo 'Aucun lien trouvé sur la page';
}
?>

API Blizzard

composer require symfony/http-client

<?php
use Symfony\Component\HttpClient\HttpClient;

// https://develop.battle.net/access/clients
// https://develop.battle.net/documentation/world-of-warcraft/game-data-apis

function getToken()
{
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_POST, true);
	curl_setopt($curl, CURLOPT_URL, 'https://oauth.battle.net/token');
	curl_setopt($curl, CURLOPT_POSTFIELDS, ['grant_type' => 'client_credentials']);
	curl_setopt($curl, CURLOPT_USERPWD, '_Client ID_:_Client Secret_');
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

	$result = json_decode(curl_exec($curl));

	curl_close($curl);

	return $result->access_token;
}

try {
	$url = 'https://eu.api.blizzard.com/profile/wow/character/ysondre/_pseudo_/achievements?namespace=profile-eu&locale=fr_FR&access_token='.getToken();

	$client = HttpClient::create();
	$response = $client->request('GET', $url);

	if($response->getStatusCode() == 200) {
		$achievs = json_decode($response->getContent());

		$hfs = [
			293, //  Trouble-fête — Disturbing the Peace
			11475, //  Mission accomplie — Mission Accomplished
			11477, // Affreux, le freux ! — Off the Top Rook
			11476, // La crème des marrons — Saddle Sore
			11478, // Coup d’esbroufe — The Darkbrul-oh
			15542, // Apocopocolypse Now
		];

		foreach($achievs->achievements as $k => $v)
		{
			$id = !empty($v->id) ? $v->id : null;
			$name = !empty($v->achievement->name) ? $v->achievement->name : null;
			$child_criteria = !empty($v->criteria->child_criteria[0]->amount) ? $v->criteria->child_criteria[0]->amount : null;

			foreach($hfs as $hfK => $hfV) {
				echo (!empty($id) AND $id === $hfV) ? $id.'<br>'.$name.'<br>'.$child_criteria : null;
			}
		}
	}
} catch(Exception $e) {
	die('Erreur : '.$e->getMessage());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment