Keep in mind that is_int() operates in signed fashion, not unsigned, and is limited to the word size of the environment php is running in.
In a 32-bit environment:
<?php
is_int( 2147483647 ); is_int( 2147483648 ); is_int( 9223372036854775807 ); is_int( 9223372036854775808 ); ?>
In a 64-bit environment:
<?php
is_int( 2147483647 ); is_int( 2147483648 ); is_int( 9223372036854775807 ); is_int( 9223372036854775808 ); ?>
If you find yourself deployed in a 32-bit environment where you are required to deal with numeric confirmation of integers (and integers only) potentially breaching the 32-bit span, you can combine is_int() with is_float() to guarantee a cover of the full, signed 64-bit span:
<?php
$small = 2147483647; $big = 9223372036854775807; if( is_int($small) || is_float($small) ); if( is_int($big) || is_float($big) ); ?>