Ethernet Shield timing out.

So I have had my Ethernet shield on my Arduino for some time now. The first problem that I ran into was that after about a week(leaving it on and requesting data from it every minute) it stopped replying to the request and it would never return the data, but I could still ping it. So I jumped on the forums and I found a post that said to do it a different way, so I did. It then lasted for about 4 weeks and I now have the same issue that I did before. Here is my current running build.

#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 10, 3 };

Server server(80);

void setup()
{
  Ethernet.begin(mac, ip);
  //Serial.begin(9600);
}

void loop()
{
  server.begin();
  Client client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean current_line_is_blank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // if we've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so we can send a reply
        if (c == '\n' && current_line_is_blank) {
          client.print("<p>");
          client.print("Hello");
          client.print("</p>");
          break;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // make sure that the client is disconnected from arduino
    while(client.connected()){client.stop();}
  }
}

I have had my ethernet shield reporting every 5 seconds for the last four months without fail; so it is possible.

The only thing I can see is that you are calling server.begin() in loop; I only call this once to start listening and never seem to call it in my sketch again.

Try moving it out into main (or other place it is called once) and see how that works...