web client issues

I'm having some problems with a sketch I put together. I essentially polls some 1 wire devices and listens for pulses from a water flow meter. Then puts all the variables on a web server. It seems to crash but I can still ping the client. Since this takes hours to crash leaving a computer hooked up to watch serial output isn't ideal due to location. Does anyone have any ideas on how to troubleshoot this? It seems to just stop trying to submit the variables to the webpage but it's hard to tell.

Also I'm worried that the interrupt code will act funny depending on where in the loop it gets called from. Does anyone have any suggestions on this?

MANY thanks in advance.

#include <PString.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 36 };
byte server[] = { 192, 168, 1, 1 }; // php server

Client client(server, 80);

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 8
#define TEMPERATURE_PRECISION 9

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

// arrays to hold device addresses
DeviceAddress insideThermometer, outsideThermometer;
float temp1;
float temp2;
//float tempc;
int keg1 = 0;
int keg2 = 0;

///  FLOW METER STUFF HERE
volatile int state = LOW;
float keg1_liter_count = 0; // This is used for counting liters drank, drunk, sipped, nursed, etc!
float keg2_liter_count = 0; // This is used for counting liters drank, drunk, sipped, nursed, etc!
int flow[] = {0, 0}; // This var is attached to the interupt and gets incremented on each flow count used for both kegs

///  END FLOW METER STUFF

void setup(void)
{
  //  Flow Meter stuff
  pinMode(5, OUTPUT); // no fucking clue what I was doing here
  attachInterrupt(0, count_beer1, RISING); // setup the interrupt for keg1 digital pin 2
  attachInterrupt(1, count_beer2, RISING); // setup the interrupt for keg2 digital pin 3
  //  END FLOW METER STUFF  //
  Ethernet.begin(mac, ip);
  // start serial port
  Serial.begin(9600);
  delay(1000);
  Serial.println();
  Serial.println("Starting up!");
  
  // Start up the library
  sensors.begin();

  // locate devices on the bus
  Serial.print("Locating devices...");
  Serial.print("Found ");
  Serial.print(sensors.getDeviceCount(), DEC);
  Serial.println(" devices.");

  // report parasite power requirements
  Serial.print("Parasite power is: "); 
  if (sensors.isParasitePowerMode()) Serial.println("ON");
  else Serial.println("OFF");

  if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); 
  if (!sensors.getAddress(outsideThermometer, 1)) Serial.println("Unable to find address for Device 1"); 
  
  // show the addresses we found on the bus
  Serial.print("Device 0 Address: ");
  printAddress(insideThermometer);
  Serial.println();

  Serial.print("Device 1 Address: ");
  printAddress(outsideThermometer);
  Serial.println();

  // set the resolution to 9 bit
  sensors.setResolution(insideThermometer, 9);
  sensors.setResolution(outsideThermometer, 9);

  Serial.print("Device 0 Resolution: ");
  Serial.print(sensors.getResolution(insideThermometer), DEC); 
  Serial.println();

  Serial.print("Device 1 Resolution: ");
  Serial.print(sensors.getResolution(outsideThermometer), DEC); 
  Serial.println();
}  

/////////////////////////////////////////////////////////////////////////
void loop(void)
{ 
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures();
  Serial.println("DONE");

  sendData();
}
/////////////////////////////////////////////////////////////////////////
// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    // zero pad the address if necessary
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
  }
}
/////////////////////////////////////////////////////////////////////////
// main function to print information about a device
void printData(DeviceAddress deviceAddress)
{
  Serial.print("Device Address: ");
  printAddress(deviceAddress);
  Serial.print(" ");
  printTemperature(deviceAddress);
  Serial.println();
}
/////////////////////////////////////////////////////////////////////////
// function to print the temperature for a device
float printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  //Serial.print("Temp C: ");
  //Serial.print(tempC);
  //Serial.print(" Temp F: ");
  //Serial.print(DallasTemperature::toFahrenheit(tempC));
  return tempC;
}
/////////////////////////////////////////////////////////////////////////
// function to send data to web server
void sendData()
{
  Serial.println("Getting Temps From within sendData");
  temp1 = DallasTemperature::toFahrenheit(printTemperature(insideThermometer));
  temp2 = DallasTemperature::toFahrenheit(printTemperature(outsideThermometer));
  Serial.println("done getting temps in sendData");
 
  //Start building out get string
  char buffer[64];
  PString str(buffer, sizeof(buffer));
  str = "GET /kegbot/index.php?temp1="; 
  str += temp1;
  str += "&temp2=";
  str += temp2;
  str += "&keg1=";
  str += flow[0];
  str += "&keg2=";
  str += flow[1];
  
  Serial.println("connecting...");
  if (client.connect()) 
   {
      Serial.println("connected");
      
      client.println(str);
      unsigned long reqTime = millis();
      
      // wait for a response and disconnect 
      while ( millis() < reqTime + 10000) // wait 10 seconds for response  
      {
         if (client.available()) 
         {
            char c = client.read();
            Serial.print(c);
         }

         if (!client.connected()) 
         {
            Serial.println();
            Serial.println("server disconnected");
            break;
         }
      }
      
      Serial.println("client disconnecting");
      Serial.println("");
      client.stop();
   } 
   else 
   {
      Serial.println("connection failed");
   }
  Serial.println("resetting pulse counts!");
  Serial.println();
  flow[0] = 0;
  flow[1] = 0;
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////
///  Flow Meter Intterrupt stuff  ///
////////////////////////////////////
void count_beer1() {
  flow[0] += 1;
}

void count_beer2() {
  flow[1] += 1;
}
/////////////////////////////////////////////////////////////////////////

I just checked and this is posting about 3x a second! I think I need to do some code tweaking to only allow it to post after the interrupt has been idle for a short while. I don't think that it currently posting like crazy should crush it....