A birthday attack tries to find collisions on cryptographic hash functions. crc32 is not cryptographic, but it is a hash function. And this snippet below illustrates the principle.

<?php
$cache = [];
$max = pow(2, 16); // 50% chance of collision after 2^16 tries

for ($i = 1; $i < $max; $i++) {
    $n = rand();
    $hashsum = crc32($n);

    if (isset($cache[$hashsum])) {
        print "Collision: crc32($n) == crc32({$cache[$hashsum]}) == $hashsum\n";
    } else {
        $cache[$hashsum] = $n;
    }
} 

The crc32 hashsum is 32 bits in length. After 2^16 tries there is a 50% chance of finding a collision.