Question: If I wanted to do large amounts of data fitting using matrices that were too large to fit in memory what tools/libraries would I look into? Specifically, if I was running on data from a website normally using php+mysql how would you suggest making an offline process that could run large matrix operations in a reasonable amount of time?

Possible answers might be like "you should use this language with these distributed matrix algorithm to map reduce on many machines". I imagine that php isn't the best language for this so the flow would be more like some other offline process reads the data from the database, does the learning, and stores back the rules in a format that php can make use of later (since the other parts of the site are built in php).

Not sure if this is the right place to ask this one (would have asked it in the machine learning SE but it never made it out of beta).

Answer: 
There are lots of things that you need to do if you want to process large amounts of data.
One way of processing web scale data is to use Map/Reduce and maybe you can look at [Apache Mahout](http://mahout.apache.org/) Which is a scalable machine learning package containing

* Collaborative Filtering
* User and Item based recommenders
* K-Means, Fuzzy K-Means clustering
* And many more.

Specifically what you want to do might be available in some opensource project, such as [Weka](http://www.cs.waikato.ac.nz/ml/weka/) but you might need to migrate/create code to do a distribute job.

Hope the above gives you an idea.
Machine Learning is a wide field and can be used for many different things (for instance supervised predictive modelling and unsupervised data exploration). Depending on what you want to achieve and on the nature and dimensions of your data, finding scalable algorithms that are both interesting both in terms of the quality of the model they output and the scalability to leverage large training sets and the speed and memory consumption at prediction time is a hard problem that cannot be answered in general. Some algorithm can be scalable because they are online (i.e. learn incrementally without having to load all the dataset at once), other are scalable because they can be divided into subtasks that can be executed in parallel). It all depends on what you are trying to achieve and on which kind of data you collected / annotated in the past.

For instance for text classification, simple linear models like logistic regression with good features (TF-IDF normalization, optionally bi-grams and optionally chi2 feature selection) can scale to very large dataset (millions of documents) without the need for any kind of cluster parallelization on a cluster. Have a look at liblinear and vowpal wabbit for building such scalable classification models.