Попробуйте освободить свой внутренний sql-результат в конце каждого цикла, используя mysql_free_result($result2);
, PHP-скрипт может этого не сделать, в зависимости от версии PHP (сборщик мусора может быть не включен или может быть бесполезным из-за слишком старая версия PHP).
Не создавайте экземпляры двух временных переменных внутри цикла, используйте непосредственно результат mysql_fetch_array, например $graph[$rows["something"]][$rows2["something2"]] = 1000000;
, вы сэкономите 2 выделения памяти на цикл.
PS: Это микро -оптимизация, поэтому она может помочь вам сэкономить достаточно памяти, чтобы поместиться в ваши 64M памяти. Не забывайте, что с 64 *1024* 1024 байтами памяти у вас есть максимальный размер в 104 байта для каждого из ваших 644 809 элементов, плюс размер самого массива плюс оставшиеся временные данные, которые вы можете выделить для своего алгоритма .
Если он не подходит, рассмотрите возможность разделения вашей матрицы и выполнения пакетных заданий или чего-то подобного, чтобы разделить вашу работу при меньшем потреблении памяти, но при выполнении более одного сценария.