因此,我考虑在这里询问而不是 SO,因为这里的人更有可能熟悉这些东西。
我目前正在使用 PHP 检测主机操作系统上的一些通用内容。在本例中,我尝试检测 CPU 供应商。
为了做到这一点,我已经:
- Linux的:
execute('grep -m 1 vendor_id /proc/cpuinfo')
- 视窗:
getenv('PROCESSOR_IDENTIFIER')
- 操作系统:???
OSX 确实是我的问题。我没有测试机器,而且我拒绝运行非法 VM(我已经在使用 11 个合法 VM)。
因此,由于 Apple 不允许我花费至少 500 美元来运行 osx,所以我决定求助其他人来帮助我实现这一目标。
我希望该命令能够在 PPC 和 Intel 型号上运行。
SO 上的相关主题再次,我无法运行任何这些命令。
答案1
从终端尝试此操作或根据需要执行:
system_profiler|grep Processor
样本:
> dmourati$ system_profiler|grep Processor
> Processor Name: Intel Core 2 Duo
> Processor Speed: 2 GHz
> Number Of Processors: 1
答案2
比上一篇文章更快捷的方法:
system_profiler SPHardwareDataType | grep Processor\ Name
这限制它仅扫描硬件,这比扫描整个系统更快。
如果您想将其作为 XML 读取并以此方式进行解析,您还可以将第一个命令更改为 system_profiler -xml SPHardwareDataType(如果输出从一个版本到另一个版本发生变化,这应该更稳定)。
答案3
我回答我的问题是因为我已经找到了最合适的答案,但这也离不开上述两个人的帮助。非常感谢大家。
笔记:还有一个附加命令,因为我发现在旧 PPC 版本中没有“处理器名称”,而是“CPU 类型”。该命令system_profiler SPHardwareDataType | grep CPU\ Type
解决了这个问题。如果建议的命令没有产生结果,我就会切换到它。
代码如下:
// ...
case 'osx':
// check on OSX
$res=self::execute('system_profiler SPHardwareDataType | grep Processor\ Name');
$procid=trim(strtolower($res['stdout']));
if($procid==''){ // for older PPC-based models
$res=self::execute('system_profiler SPHardwareDataType | grep CPU\ Type');
$procid=trim(strtolower($res['stdout']));
}
break;
// ...
// match vendor
if(strpos($procid,'intel') !==false)return 'intel';
if(strpos($procid,'amd') !==false)return 'amd';
if(strpos($procid,'ppc') !==false)return 'ppc';
if(strpos($procid,'powerpc')!==false)return 'ppc';
依赖项说明
我正在使用自定义函数来执行命令。它返回一个数组,result
其中包括stdout
、stderr
等。在本例中,只stdout
使用了 ,因此您也可以将其替换为shell_exec()
。
答案4
sysctl 将转储您需要的信息:
sysctl -a | grep cpu
2018 15 英寸 MacBook Pro 上的示例输出:
hw.ncpu: 12
hw.activecpu: 12
hw.cpu64bit_capable: 1
hw.cpufamily: 260141638
hw.cpufrequency: 2900000000
hw.cpufrequency_max: 2900000000
hw.cpufrequency_min: 2900000000
hw.cpusubfamily: 0
hw.cpusubtype: 8
hw.cputype: 7
hw.logicalcpu: 12
hw.logicalcpu_max: 12
hw.physicalcpu: 6
hw.physicalcpu_max: 6
hw.cputhreadtype: 1
machdep.xcpm.cpu_thermal_level: 82
machdep.cpu.xsave.extended_state: 31 832 1088 0
machdep.cpu.xsave.extended_state1: 15 832 256 0
machdep.cpu.tlb.data.small: 64
machdep.cpu.tlb.data.small_level1: 64
machdep.cpu.tlb.inst.large: 8
machdep.cpu.thermal.ACNT_MCNT: 1
machdep.cpu.thermal.core_power_limits: 1
machdep.cpu.thermal.dynamic_acceleration: 1
machdep.cpu.thermal.energy_policy: 1
machdep.cpu.thermal.fine_grain_clock_mod: 1
machdep.cpu.thermal.hardware_feedback: 0
machdep.cpu.thermal.invariant_APIC_timer: 1
machdep.cpu.thermal.package_thermal_intr: 1
machdep.cpu.thermal.sensor: 1
machdep.cpu.thermal.thresholds: 2
machdep.cpu.mwait.extensions: 3
machdep.cpu.mwait.linesize_max: 64
machdep.cpu.mwait.linesize_min: 64
machdep.cpu.mwait.sub_Cstates: 286531872
machdep.cpu.cache.L2_associativity: 4
machdep.cpu.cache.linesize: 64
machdep.cpu.cache.size: 256
machdep.cpu.arch_perf.events: 0
machdep.cpu.arch_perf.events_number: 7
machdep.cpu.arch_perf.fixed_number: 3
machdep.cpu.arch_perf.fixed_width: 48
machdep.cpu.arch_perf.number: 4
machdep.cpu.arch_perf.version: 4
machdep.cpu.arch_perf.width: 48
machdep.cpu.address_bits.physical: 39
machdep.cpu.address_bits.virtual: 48
machdep.cpu.tsc_ccc.denominator: 2
machdep.cpu.tsc_ccc.numerator: 242
machdep.cpu.brand: 0
machdep.cpu.brand_string: Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
machdep.cpu.core_count: 6
machdep.cpu.cores_per_package: 8
machdep.cpu.extfamily: 0
machdep.cpu.extfeature_bits: 1241984796928
machdep.cpu.extfeatures: SYSCALL XD 1GBPAGE EM64T LAHF LZCNT PREFETCHW RDTSCP TSCI
machdep.cpu.extmodel: 9
machdep.cpu.family: 6
machdep.cpu.feature_bits: 9221959987971750911
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C
machdep.cpu.leaf7_feature_bits: 43806655 1073741824
machdep.cpu.leaf7_feature_bits_edx: 2617257472
machdep.cpu.leaf7_features: RDWRFSGS TSC_THREAD_OFFSET SGX BMI1 HLE AVX2 SMEP BMI2 ERMS INVPCID RTM FPU_CSDS MPX RDSEED ADX SMAP CLFSOPT IPT SGXLC MDCLEAR TSXFA IBRS STIBP L1DF SSBD
machdep.cpu.logical_per_package: 16
machdep.cpu.max_basic: 22
machdep.cpu.max_ext: 2147483656
machdep.cpu.microcode_version: 234
machdep.cpu.model: 158
machdep.cpu.processor_flag: 5
machdep.cpu.signature: 591594
machdep.cpu.stepping: 10
machdep.cpu.thread_count: 12
machdep.cpu.vendor: GenuineIntel