static int filename_is_in_cache(char *filename, int filename_len TSRMLS_DC)
{
	char *key;
	int key_length;
	zend_file_handle handle = {0};
	zend_persistent_script *persistent_script;

	handle.filename = filename;
	handle.type = ZEND_HANDLE_FILENAME;

	if (IS_ABSOLUTE_PATH(filename, filename_len)) {
		persistent_script = zend_accel_hash_find(&ZCSG(hash), filename, filename_len);
		if (persistent_script) {
			return !persistent_script->corrupted &&
				validate_timestamp_and_record(persistent_script, &handle TSRMLS_CC) == SUCCESS;
		}
	}

	if ((key = accel_make_persistent_key_ex(&handle, filename_len, &key_length TSRMLS_CC)) != NULL) {
		persistent_script = zend_accel_hash_find(&ZCSG(hash), key, key_length);
		return persistent_script && !persistent_script->corrupted &&
			validate_timestamp_and_record(persistent_script, &handle TSRMLS_CC) == SUCCESS;
	}

	return 0;
}
static int filename_is_in_cache(zend_string *filename)
{
	char *key;
	int key_length;

	key = accel_make_persistent_key(filename->val, filename->len, &key_length);
	if (key != NULL) {
		zend_persistent_script *persistent_script = zend_accel_hash_str_find(&ZCSG(hash), key, key_length);
		if (persistent_script && !persistent_script->corrupted) {
			zend_file_handle handle = {{0}, NULL, NULL, 0, 0};

			handle.filename = filename->val;
			handle.type = ZEND_HANDLE_FILENAME;

			if (ZCG(accel_directives).validate_timestamps) {
				return validate_timestamp_and_record(persistent_script, &handle) == SUCCESS;
			}

			return 1;
		}
	}

	return 0;
}