function get_threads($Y, $M)
{
    // charge les fils de discussion d'apres le cache
    // ou le (ré)génère si besoin.
    global $serveur_listes, $liste, $fichier_cache_prefix;
    global $thread_sujet, $thread_de, $thread_date;
    $now = time();
    $mois_en_cours = strftime("%m", $now);
    // mois consulté : $M
    $fichier_cache = sprintf("{$fichier_cache_prefix}%04d%02d.cache", $Y, $M);
    // format : archives-ml_200207.cache pour juillet 2002
    // cas où on va générer le cache
    if (!file_exists($fichier_cache) || !filesize($fichier_cache) || $M < $mois_en_cours && strftime("%m", filemtime($fichier_cache)) == $M || $M == $mois_en_cours && $now - filemtime($fichier_cache) > 3600) {
        // alors on génère le cache
        $page = file("http://{$serveur_listes}?L={$liste}&Y={$Y}&M={$M}");
        if ($page) {
            $page = explode("\n", unmime(join("", $page)));
            // violent, mais nécessaire ;)
            $page = preg_replace("/^\t\t\t/m", "", $page);
            $fpcache = fopen($fichier_cache, "w");
            if (flock($fpcache, 2)) {
                fwrite($fpcache, "<? // fichier cache généré, ne pas modifier\n\n");
                for ($i = 16; $i < count($page); $i += 12) {
                    $sujet = $page[$i + 3];
                    $de = $page[$i + 6];
                    $date = $page[$i + 9];
                    if ($sujet) {
                        preg_match("/\\&L\\=([^\"]*?)\"/", $sujet, $m);
                        list($sujet_post, ) = get_post($m[1]);
                        $sujet_thread = my_trim($sujet_post);
                        $thread_sujet[$sujet_thread][] = $sujet;
                        $thread_de[$sujet_thread][] = $de;
                        $thread_date[$sujet_thread][] = $date;
                        fwrite($fpcache, '$thread_sujet["' . addslashes($sujet_thread) . '"][]="' . addslashes($sujet) . "\";\n");
                        fwrite($fpcache, '$thread_de["' . addslashes($sujet_thread) . '"][]="' . addslashes($de) . "\";\n");
                        fwrite($fpcache, '$thread_date["' . addslashes($sujet_thread) . '"][]="' . addslashes($date) . "\";\n\n");
                    }
                }
                fwrite($fpcache, "?>");
                fclose($fpcache);
            } else {
                // on n'a pas eu le lock
                //BUG: on fait quoi ?
                echo "<p>1:Impossible de charger la page !</p>";
            }
        } else {
            // on n'a pas eu la page http://$serveur?$path
            //BUG: on fait quoi ?
            echo "<p>2:Impossible de charger la page !</p>";
        }
    } else {
        // sinon on utilise le cache
        include $fichier_cache;
    }
}
<!doctype html>
<html lang="en" itemscope itemtype="http://schema.org/Article">
	<head>
		<meta charset="utf-8">
	    <meta name="viewport" content="width=device-width">
	    <meta name="generator" content="Anchor CMS">
		<title><?php 
echo my_trim(page_title('Page can’t be found'), site_name(), 65);
?>
</title>

		<meta name="description" content="<?php 
echo my_get_description(154);
?>
">

		<link href='https://fonts.googleapis.com/css?family=Lato:400,100,100italic,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">

		<link rel="stylesheet" href="<?php 
echo theme_url('/css/reset.css');
?>
">
		<link rel="stylesheet" href="<?php 
echo theme_url('/css/style.css');
?>
">
		<link rel="stylesheet" href="<?php 
echo theme_url('/css/small.css');
?>
" media="(max-width: 400px)">